たとえば、タグ P には、埋め込みスタイル シートと外部スタイル シートで複数回設定された関連する属性値 (color: red;/color: blue など) が含まれる場合があります。では、ブラウザはどの値を使用するのでしょうか。 Pのスタイルを表示しますか? ? ?これが CSS の仕組みです。 (中でも、特異性がより重要です)
CSS には 3 つの動作メカニズムがあります: 1. 継承 2. カスケード 3. 仕様 (カスケードの原則は継承と特異性に基づいています)
1. 継承: cssの要素は、その子孫に 1 つのこと、つまり CSS プロパティの値を渡します。 body はすべての要素の祖先です。 body{color:red;} を指定すると、ドキュメント内のすべての要素がこのスタイルを継承します。これが、メモ帳プログラムでテキスト行を作成した後、その名前を xxx.html に変更する理由です。各ブラウザには独自の事前定義されたスタイル テーブルがあるため、別のブラウザで開くと異なるフォント効果が表示されます。本文には font 属性が含まれており、ブラウザで HTML を開くと、この属性が継承されます。
もちろん、すべての属性を継承できるわけではありません。継承できる属性のほとんどは、色、フォント、フォント サイズなど、テキストに関連しています。一部の属性は、要素の位置、マージン、パディング、境界線、その他の属性に関係するものなど、継承しても意味がないか、継承するとページのレイアウトに影響します。
2. カスケード: これは CSS の C (カスケード) で、主にスタイルのソースと詳細に従ってカスケードします。
a) スタイル ソース: 以下は、ブラウザが各ソースからスタイルをカスケードする順序です:
- ブラウザのデフォルト スタイル シート
- ユーザー スタイル シート (たとえば、視覚障害のあるユーザーの場合は、本文を追加します{ font-size :200%})
- 開発者用外部スタイル シート (ページに導入される順序)
- 開発者埋め込みスタイル シート
- 開発者インライン スタイル シート
- 注: 3 と 4 の順序は次のとおりです。 c9ccee2e6ea535a969eb3f532ad9fe89 埋め込まれた style タグの位置と 2cdf5bf648cf2f33323966d7f58a7f3f タグの位置、後のタグが選択されます。例 2 を参照してください
優先度が高いほど、ブラウザは後のソース設定を優先します
b) 特異性: セレクターのスコアリング ルールであり、スコアの高いセレクターが選択されます。式には計算する必要がある 3 つの値があります: I-C-E。ルールは次のとおりです
セレクターに ID セレクターがある場合は、I に 1 を加えます-
セレクターにクラス セレクターがある場合は、 Cに1を追加します-
セレクターにタグ名がありますので、Eに1を追加するだけです-
3桁の数値を取得します-
最初に上位ビットを比較し、上位ビットが高いです、たとえば、1-0- 0 は以前の選択よりも高い値です。同様に、特殊なスタイルが同じ場合は、後で宣言されたスタイルが選択されます。 -
セレクターは英語ではセレクターとも呼ばれます。CSS にはさまざまな種類がありますので、ここでは詳しく説明しません。
特異度の例を示します:
p | 0-0-1 specificity=1 |
p.classp1 | 0-1-1 特異度は 11 |
p#idp1 | 1-0-1 特定次数は 101 |
body p#idp1 | 1-0-2 特定次数は 102 |
body p#idp1 ul.classul1 | 1-1- の特定次数3は113です |
body p#idp1 ul.classul1 li | 1-1-4の具体的な次数は114です |
3 つの動作メカニズムに基づいて、3 つのルールが要約され、あらゆる状況に適用されます。
1) ID セレクターはクラス セレクターより大きく、クラス セレクターはラベル セレクターよりも大きくなります。一言で言えば、特異性の高いセレクター (より具体的な選択) が選択されます。
2) ブラウザは HTML ドキュメントの順序で各スタイル シートを読み取り、後のスタイル シートは前のスタイル シートと同じ属性を持つスタイルを上書きします。次のスタイルの特異性が低い場合、前のスタイルを上書きすることはできません
注: ルール 1 はルール 2 よりも強力です。特異性が高い場合は、それがどこにあっても (行内を除く)、選ばれる。インライン スタイルが最も優先されます (ただし、インライン スタイルは通常は使用されません。42c0d80b735603303970f6f0b2b5acf6)、次に詳細度が続きます。
3) 設定されたスタイルは継承されたスタイルよりも優れています
例子1 :id选择器优于类选择器<style> .li1{color: red;} #li1{color:yelow;}</style><link rel="stylesheet" href="demo.css"></head><body> <div id="div1"> <ul class="ul1"> <li id="li1" class="li1">列表项1</li> </ul> </div>列表1为黄色
例子2 :嵌入样式表和外部样式表,选哪个(主要看浏览器按顺序,后读取的会覆盖点前面读取的),相同特指度的时候<link rel="stylesheet" href="demo.css"><style> .li1{color: red;}</style></head><body> <div id="div1"> <ul class="ul1"> <li id="li1" class="li1">列表项1</li>(黄色)外部样式表demo.css
.li1{
color: yellow;}