IEのみにスタイルを適用するCSSハック
IEのみにcssを適用する方法についてまとめました。
IE11、IE10に適用する
1 2 3 |
_:-ms-input-placeholder, :root セレクタ { /* IE11、IE10のみに適用したいスタイル */ } |
どのような仕組みでIEにのみスタイルが適用されるのか考察されている以下のサイトが参考になりました。
【参考】IEハック
IE10を無視してIE11のみに適用する
サポートが終了したIE10は切り捨ててIE11のみに適用する場合は以下
1 2 3 |
_:-ms-lang(x)::-ms-backdrop, セレクタ { /* IE11のみに適用したいスタイル */ } |
-ms-high-contrast: none の使用は避けたい?
IE css ハック で検索すると以下の記述方法が多数出てきます。
1 2 3 |
@media (-ms-high-contrast: none) { /* IE11、IE10のみに適用したいスタイル */ } |
これだと、ハイコントラストモードがnoneの時にはスタイルが適用されますが、
ハイコントラストモードがactiveの時にはIEでもスタイルが適用されません。
ではこうすればいい?
1 2 3 4 5 |
@media (-ms-high-contrast: none), (-ms-high-contrast: active) { セレクタ { /* 適用させたいスタイル */ } } |
今度はハイコントラストモードがオンの場合にEdgeにもスタイルが適用されてしまいます。