はじめてのCSS:やさしさいっぱいのCSSが肌にしみこむ!カモ。

CSSハックとIEの条件分岐

トモ・リーン
今回は禁断のテク、CSSハックのご紹介です!
ケンジ
禁断ってドキドキする響きだね!!
トモ・リーン
CSSハックとは特殊な記述法でCSSを書くことによって、そのCSSを読めるブラウザを制限するテクニックです。
これで特定のブラウザでしか出ないレイアウトの乱れを直すことが出来ます。
ケンジ
それのどこが禁断なの?
トモ・リーン
CSSハックはとっても便利だけど多用すると、ゴチャゴチャしたソースになるから、どうしても調整できない最終手段として使ってください。
あと、CSSの仕様的に間違った書き方もあるのよ。
ケンジ
うむ、了解したぜ☆
トモ・リーン
ではInternetExplorer6から!
この書き方をでCSSを書くとInternetExplorer6しか参照しません。
IE6だけに読ませる為のCSSハック
IE6にだけ読ませたいプロパティの前に_(アンダーバー)を入れる。
/* 記入例 */
div {
_プロパティを記入;
}
この書き方はCSSの仕様的には間違っているので、CSS Validation Serviceなどのサイトでは減点されてしまいます。
IE6にだけ読ませたいプロパティの前に*(アスタリスク)(半角スペース)htmlを入れる。
/* 記入例 */
* html セレクタ {
プロパティを記入;
}
ケンジ
書式を気にしなくてもいい場合は、アンダーバーのハックの方が気軽に使えていいね!
トモ・リーン
次はInternetExplorer7対応ね。
この書き方をでCSSを書くとInternetExplorer7しか参照しません。
IE7だけに読ませる為のCSSハック
IE7にだけ読ませたいプロパティの前に*(アスタリスク)+(プラス)htmlを入れる。
/* 記入例 */
*+html セレクタ {
プロパティを記入;
}
ケンジ
なんだか気持ち悪いけど、バリデート系サイトでも減点されないんだね!
トモ・リーン
CSSハックじゃないけど実はIEってHTMLのコメントアウトと専用の条件式で、CSS・JavaScriptなどの外部ファイルの読み込みを細かく制御できるのよ。
IEの条件分岐式

headタグ内に記入。CSS以外にもJavaScript外部ファイルにも使える!!

IE6だけに対応させたいとき
/* 記入例 */
<!--[if IE 6]>
<link rel="stylesheet" href="読み込みたい外部CSSファイル" type="text/css" />
<![endif]-->
IE7以下のバージョンに対応させたいとき
/* 記入例 */
<!--[if lte IE 7]>
<link rel="stylesheet" href="読み込みたい外部CSSファイル" type="text/css" />
<![endif]-->
トモ・リーン
他にも書き方があるんだけど、続きはものすごく細かく書いてある、BLOG × WORLD ENDINGさんのページをみてね!
ケンジ
この人、ものすごい研究してるよ〜〜〜!
IE系専用の記述が多い場合は、CSSハックよりも条件分岐の方がいいね。
トモ・リーン
残りの主なブラウザ用ハックはこんな感じね〜!
Firefox3だけに読ませる為のCSSハック
/* 記入例 */
html:not([lang*=""]) セレクタ {
プロパティを記入;
}
Safari3だけに読ませる為のCSSハック
/* 記入例 */
html:not(:only-child:only-child) セレクタ {
プロパティを記入;
}
ケンジ
う〜〜〜ん。
すごい、不思議な書き方だね!!
始めに気がついた人はすごいよ。
トモ・リーン
CSSハックはブラウザのバグや未実装な部分などを、いい感じに突いたテクなのよ。
本当に裏技ね。
IEの6・7辺りは、もうガチだと思うけど、FirefoxやSafariなどはもしかしたらバージョンアップなどで使えなくなる可能性があるから、最小限の使用にした方がいいわ。
今回のポイント!
CSSハックは便利だけど使い過ぎないように気をつけましょう!