最近、Wordpressテーマを作っていて、スタイルシートの表示が次のように、IE11だけ、おかしくなる現象になりました。
- Chrome→OK
- Firefox→OK
- Opera→OK
- IE11→崩れる
- IE10→OK
で、ブラウザのCSSハックでIE11だけを対象にスタイルシートを書く方法を探したんですけど日本語ページでは見つからなかったので、海外のサイトで見つけた方法をシェア。
photo by Blubr Blog
目次
IE11だけスタイルシートを適用する方法
で、その方法なんですけどStack Overflowの以下のページで見つけました。
css selectors – How to write a CSS hack for IE 11? – Stack Overflow
これによると、以下のように書くとIE11だけで適用されるスタイルシートが書けます。(IE12が出たら適用される可能性もあります)
@media all and (-ms-high-contrast:none){ *::-ms-backdrop, .foo { color: red } /* IE11 */ }
「*::-ms-backdrop, 」を付けないで書くとIE10以降に適用されます。こんな感じ。
@media all and (-ms-high-contrast:none){ .foo { color: green } /* IE10 */ }
その他のInternet ExplorerのCSSハック方法は、以下に詳しく書かれています。
【保存版】IEのバージョンを判別し、バージョンごとにスタイルを適用する3つの方法 | DX.univ
IE6/IE7/IE8/IE9/IE10/&モダンブラウザ CSSハックまとめ|ホームページ制作 印刷物作成 デザイン事務所|エイビッツ
IE用CSSハックの簡単な書き方とIE10への対応 | web codery
IE11だけ表示が崩れたCSS
今回IE11だけ不具合が出たスタイルシートはこれです。修正した経緯も書いておきます。
/************************************ ** 引用(blockquote) ************************************/ blockquote { background: none repeat scroll 0 0 rgba(245, 245, 245, 0.8); border: 1px solid #FFFFFF; margin: 0.8em 0; padding: 20px 55px; position: relative; } blockquote:before { color: #C8C8C8; content: "“"; font-family: serif; font-size: 600%; left: 0; line-height: 1em; position: absolute; top: 0; } blockquote:after { bottom: 0; color: #C8C8C8; content: "”"; font-family: serif; font-size: 600%; line-height: 0; position: absolute; right: 0; bottom: -16px; }
Chrome、Firefox、Opera、IE10などでは以下のように表示されるのに
IE11では、このように表示されてしまいました。
IE10のCSSハック方法で直すと、IE11ではOKだけど、今度はIE10でこんな感じになる。
で、何とかIE11だけで適用されるスタイルシートを描きたいということで、先程の方法を以下のように書くと
@media all and (-ms-high-contrast:none){ *::-ms-backdrop, blockquote:before { left: -55px; } *::-ms-backdrop, blockquote:after { right: -55px; } }
Chrome、Firefox、Opera、IE10、IE11で意図通りに表示されました。
その他のブラウザでは、調べてません。