cssとタグ付けされたいくつかの回答!important
は、特異性を支持しての使用を思いとどまらせます。なんで?
1 に答える
CSSルールの影響を予測、制御、およびリバースエンジニアリングするために使用できる実際の数学があります。使用することによって!important
あなたはそれを破っています。たとえば、このJSフィドルを見てください。これは使用していません:http !important
://jsfiddle.net/hXPk7/
FirebugまたはChrome開発ツールを使用して「Richard」と表示されているtitle要素を検査する場合、次のルールが次の順序で表示されます。
/**************************/
/* /hXPk7/show/ (line 20) */
/**************************/
#myExample #title .name {
color: yellow;
}
/********************************************************/
/* /hXPk7/show/ (line 14) - Inherited fromdiv#myExample */
/********************************************************/
#myExample {
color: blue;
}
これはCSSスタイルシートに表示される順序ではないことに注意してください。代わりに、特定性の高い順に並べられています。優先されるものが最初にリストされ、他のもの(ルールがより具体的なルールによってオーバーライドされる)には、おそらくプロパティに取り消し線が引かれています。これは、特異性により、要素がCSSプロパティを取得している場所を簡単に追跡(デバッグ?)できることを示しています。
ここで、このJSフィドルと比較してください。これは事実上同じですが、次を使用する単一の新しいルールがあります:http !important
: //jsfiddle.net/hXPk7/1/
FirebugまたはChrome開発ツールを使用して同じ要素を検査すると、次のようなものが表示されます。
/**************************/
/* /hXPk7/1/show/ (line 20) */
/**************************/
#myExample #title .name {
color: yellow;
}
/**************************/
/* /hXPk7/1/show/ (line 26) */
/**************************/
span {
color: black !important;
}
/********************************************************/
/* /hXPk7/1/show/ (line 14) - Inherited fromdiv#myExample */
/********************************************************/
#myExample {
color: blue;
}
繰り返しになりますが、ルールはその特異性に従って順序付けられていますが、今回は、最初にリストされている最も具体的なルールがのを指定しているのに対し、ブラウザーは代わりにテキストを黒としてレンダリングすることに注意してcolor
くださいyellow
。これは、!important
宣言が特定性の通常の動作を破り、追跡が困難な方法で優先されるためです。数百のルールが存在する可能性のある、より現実的なWebサイトを想像してみてください。このサイトを制御しているサイトは、color
見つけたり変更したりするのが明らかではありません。
!important
さて、これは開発者ツールの問題かもしれませんが、通常は予測しやすい優先順位のシステムを採用し、それをより困難にしているという事実を反映していると思います。たぶんそれを使う時があるかもしれません、しかしそれはあなたがCSSを書くときあなたが到達する最初のツールであるべきではありません。