高度なCSSハックコレクション

この記事は、 同様の記事と比較したCSSハックの拡張コレクションです。

ハッキングとは、特定のブラウザのみがCSSを認識できるようにする方法です。

ハックは、レイアウトのバグを修正するためだけでなく、特定のブラウザ機能を使用してWebページのレンダリングを高速化する場合にも使用できます(CSS3プロパティなど)



IEの条件付きコメントは誰でも知っている



その名声にもかかわらず、めったに使用されないものが多くあります。

たとえば、IEバージョン5〜8を除くすべてのブラウザーに表示されるスタイルシート。
<!--[if !IE]--> < link href ="styles.css" rel ="stylesheet" media ="all" /><! -- [ endif ] -- >





第6、第7、第8バージョンの条件付きコメント(第8バージョンもサポートしています-驚かないでください):
<!--[if IE 6]><link href="ie6.css" rel="stylesheet" media="all" /><![endif]-->



<!--[if IE 7]><link href="ie7.css" rel="stylesheet" media="all" /><![endif]-->



<!--[if IE 8]><link href="ie8.css" rel="stylesheet" media="all" /><![endif]-->







IEのその他のハッキング



* html .class{background:red}



htmlページにdoctypeがある場合、このハックはIE6でのみ機能します。

quirks-modeの場合、ハックはIE6およびIE7で機能します。



*+html .class{background:red}



または
*:first-child+html .class{background:red}



HTMLページにdoctypeがある場合、このハックはIE7で機能します。





IE6でのみ動作するダーティハック

.class{<br>_background:red<br>}



.class{<br>-background:red<br>}







IE7でのみ機能するダーティハック

-,.class{<br>background:red;<br>}







IE6およびIE7で動作するダーティハック

.class{<br>*background:red<br>}



.class{<br>//background:red;<br>}





.class{background:red!ie}



IE6およびIE7で動作するハックです!重要なプロパティとの類似性。





IE6、IE7、Safariのダーティハック



html*.class{background:red}



Nuance-Google Chrome 2では機能しません。 このハックは、8からスタイルを分離する必要がある場合にIEの一般的なCSSファイルに役立ちます





Safari 3のダーティハック



html:root*.class{background:red}



また、Chrome 2では機能しません。このハックおよびその他のサファリハックを使用する理由については、 こちらを参照してください





FF2、FF3のダーティハック



@-moz-document url-prefix(){<br>.class{background:red}<br>}







FF2、FF3、IE7のダーティハック



x:-moz-any-link,.class{background:red}







FF3およびIE7のダーティハック



x:-moz-any-link,x:default,.class{background:red}







Opera 9.5およびIE7のダーティハック



noindex:-o-prefocus,.class{background:red}



オペラ専用のハックにするには、IE7をサポートしないフレーミングハックを使用します。





FF2、FF3、Safari 3、Chrome 2、Opera 9.5のハック



html:root .class{background:red}







Safari 3および4のハック、Chrome 2



@media screen and (-webkit-min-device-pixel-ratio:0) {<br>body:first-of-type .class {background: red}<br>}







Safari 3、Chrome 2、Opera 9.5のハック



body:first-of-type .class{background:red}



@media all and (min-width:0){<br>.class{background:red}<br>}







FF2、FF3、Safari 3、Chrome 2のハック



html:not([lang*=""]):not(:only-child) .class{background:red}



このハックは、たとえば、SafariとFFでCSSを使用して角を丸くしたい場合や、他のブラウザーで写真にしたい場合に使用できます。



IE6からスタイルを分離する



<!--[if !IE 6]--> < link href ="styles.css" rel ="stylesheet" media ="all" /><! -- [ endif ] -- >



html>body .class{background:red}



head+body .class{background:red}



html:first-child .class{background:red}







IE6とIE7からのスタイルの分離

html>/**/body .class{background:red}







IE6-8からのスタイルの分離



*|html .class{background:red}



html:not([lang*=""]) .class{background:red}







IEのスタイルの分離について



マイクロソフト自体は、条件付きコメントの使用を推奨しています( 公式ブログ )。 私の仕事では、すべてのIEに条件付きコメントを使用します。
<!--[if IE]><link href="ie.css" rel="stylesheet" media="all" /><![endif]-->



さらに、IE6とIE7のハック* html



*+html



スタイルをそれぞれ分離します。 残りのスタイルはすべてのIEで取得されます。





IE8レンダリングの変更



Webページのヘッダーにこの行を追加すると、コンテンツの値に応じてレンダリングのタイプが変更されます(これはハックではありませんが、プロパティはハックに非常に似ています)。
< meta http-equiv ="X-UA-Compatible" content ="IE=8" />



コンテンツの基本的な値は次のとおりです( ここから引用 )。 IE8で古いプロジェクトを書き直したくない場合IE=EmulateIE7



使用できます



上記のすべての例で、.classはクラスの例(id、タグなどを指定できます)、およびbackground:redはプロパティとその値の例です。



PSあなたが見たいレイアウトに関する記事をコメントに書いてください-あなたが提案したトピックを理解したら、私はこれに関する記事を書きます。



All Articles