CSSセレクタの重みと優先規則

4962 ワード

ウェイト順序(Weight Order)
「important」>「インライン」>「ID」>「クラス」>「ラベル|擬似クラス|属性選択」>「擬似オブジェクト」>「継承」>「ワイルドカード」.
 
原文:http://www.nowamagic.net/csszone/css_SeletorPriorityRules.php
CSSを使用してWeb要素のスタイルを定義する場合、一般要素に一般スタイルを適用し、より特殊な要素に上書きすることがよくあります.では、新しく定義した要素スタイルがターゲット要素の元のスタイルを上書きできることを保証するにはどうすればいいのでしょうか.
CSSでは、セレクタの特殊性に基づいて定義されたスタイルルールの順序が決定され、より特殊なセレクタを持つルールは一般的なセレクタを持つルールより優先され、2つのルールの特殊性が同じであれば、後に定義されたルールが優先されます.
では、セレクタの特殊性をどのように計算するのでしょうか.次の図では、特殊性の計算方法を説明します.
CSS选择器的权重与优先规则
特殊性を4つのレベルに分け,各レベルはセレクタのクラスを表し,各レベルの値はその代表するセレクタの個数にこのレベルの重み値を乗じ,最後にすべてのレベルの値を加算してセレクタの特殊値を導いた.
4つのレベルの定義は次のとおりです.
  • 第1等:style=」などのインラインスタイルを表し、重み値は1000です.
  • 第2等:IDセレクタを表し、例えば:#content、重み値は100である.
  • 第3等:代表クラス、擬似クラス、属性セレクタなど.content、重み値は10です.
  • 第4等:div pのようなタイプセレクタと擬似要素セレクタを表し、重み値は1である.
  • 例えば、上記の図を例として、NAVが2等選択器である.ACTIVEは3等セレクタ、UL、LI、Aは4等セレクタである.セレクタ式全体の特殊性の値は1*100+1*10+3*1=113です
    次の計算例を示します.
    CSS选择器的权重与优先规则
    注意:汎用セレクタ(*)、サブセレクタ(>)、および隣接する同胞セレクタ(+)はこの4つのレベルにないので、それらの重み値は0です.
    具体的な例を見てみましょう.以下のスタイルルールのセットがあれば、HTMLコードの2つのタイトルが何色なのか判断できますか.01 #content div#main-content h 2 { 02      color : red ; 03 } 04 05 #content #main-content>h 2 { 06      color : blue 07 } 08 body #content div[id= "main-content" ] h 2 { 09      color : green ; 10 } 11 12 #main-content div.paragraph h 2 { 13      color :orange; 14 } 15 #main-content [class= "paragraph" ] h 2 { 16      color :yellow; 17 } 18 div#main-content div.paragraph h 2 .first{ 19      color :pink; 20 }以下はHTMLコードです.01 < div id = "content" > 02      < div id = "main-content" > 03          < h2 >CSS </ h2 > 04          < p >CSS(Cascading Style Sheet, “ ” “ ”) , Web 。</ p > 05          < div class = "paragraph" > 06              < h2 class = "first" > CSS </ h2 > 07              < p >1、 2、 3、 4、 CSS W3C .</ p > 08          </ div > 09      </ div > 10 </ div >判断できましたか?答えは:2つのタイトルはすべて赤いです!
    6つのスタイル・ルールのそれぞれの特殊性の値を計算しましょう.
  • 最初の特殊性の値=2*100+2*1=202
  • 第2の特殊性の値=2*100+1=201
  • 第3の特殊性の値=1*100+1*10+3*1=113
  • 第4の特殊性の値=1*100+1*10+2*1=112
  • 第5の特殊性の値=1*100+1*10+1*1=111
  • 第6の特殊性の値=1*100+2*10+3*1=123
  • わかりました.最初のスタイルルールは202の高得点で今回のスタイルセレクタ特殊性大会のチャンピオンを獲得しました.後ろのルールはもっと複雑に見えますが、特殊性は誰のセレクタ式をもっと長く書くのではなく、IDセレクタが王道です.
    セレクタの特殊性を理解することは重要です.特にバグを修復する際には、どのルールが優先されているのか、その理由を理解する必要があります.
    機能していないようなCSSルールに遭遇した場合は、特殊な衝突が発生した可能性があります.セレクタに親要素のIDを追加して、その特殊性を高めてください.これが問題を解決できる場合は、スタイルシートの他の場所にもっと特別なルールがある可能性があります.それはあなたのルールをカバーしています.この場合、コードをチェックし、特殊な競合を解決し、コードをできるだけ簡潔にする必要があります.