CSS の特異性は、関連する宣言ではなく、セレクターのみに関係します。!important
宣言に適用されるため、それだけでは具体性に影響を与えません。
ただし、複数の同じプロパティ宣言が適用される特定の要素のスタイルの全体的な計算であるカスケード!important
に影響します。または、クリストファー・アルトマンが簡潔に説明しているように:
!important
はスペードカードです。それはすべての特異点に勝ります。
!important
それだけではありません。カスケード全体に影響を与えるため、同じ要素に一致する宣言を含むルールを持つ複数のセレクターがある場合!important
、セレクターの特異性が引き続き適用されます。繰り返しますが、これは単純に、同じ要素に複数のルールが適用されているためです。
つまり、同じスタイルシート (同じユーザー スタイルシート、同じ内部作成者スタイルシート、または同じ外部作成者スタイルシートなど) 内の等しくないセレクターを持つ 2 つのルールの場合、最も具体的なセレクターを持つルールが適用されます。スタイルが存在する場合は!important
、最も具体的なセレクターを持つルール内のスタイルが優先されます。最後に、重要なものかそうでないものしか持つことができないため、カスケードに影響を与えることができるのはこれだけです。
のさまざまな用途!important
とその適用方法を以下に示します。
宣言は常に宣言の!important
ないものをオーバーライドします (IE6 以前を除く):
/* In a <style> element */
#id {
color: red !important;
color: blue;
}
同じレベルの特異性を持つルールに複数の!important
宣言がある場合、後で宣言されたものが優先されます。
/* In a <style> element */
#id {
color: red !important;
color: blue !important;
}
同じルールと同じプロパティを 2 つの異なる場所で!important
宣言する場合、両方の宣言が重要な場合はカスケード順序に従います。
/* In an externally-linked stylesheet */
#id {
color: red !important;
}
/* In a <style> element appearing after the external stylesheet */
#id {
color: blue !important; /* This one wins */
}
次の HTML の場合:
<span id="id" class="class">Text</span>
2 つの異なるルールと 1 つのルールがある場合!important
:
#id {
color: red;
}
.class {
color: blue !important;
}
それ!important
は常に勝ちます。
ただし、複数ある場合!important
:
#id {
color: red !important;
}
.class {
color: blue !important;
}
#id
ルールにはより具体的なセレクターがあるため、どちらかが優先されます。