ホームページ  >  記事  >  ウェブフロントエンド  >  CSS セレクターの重みと優先順位のルール

CSS セレクターの重みと優先順位のルール

高洛峰
高洛峰オリジナル
2017-03-02 15:18:411703ブラウズ

CSS では、定義されたスタイル ルールの順序は、より具体的なセレクターを含むルールが一般的なセレクターを含むルールよりも優先されます。2 つのルールの具体性が同じ場合、最後に定義されたルールが優先されます。優先する CSS を使用して Web ページ要素のスタイルを定義するときに、このような状況がよく発生します。一般的なスタイルを一般的な要素に適用してから、より具体的な要素でオーバーライドする必要があります。では、新しく定義した要素スタイルがターゲット要素の元のスタイルを確実にカバーできるようにするにはどうすればよいでしょうか?

CSS では、定義されたスタイル ルールの順序は、セレクターの詳細度に基づいて決定されます。2 つのルールの詳細度が同じ場合、より具体的なセレクターを含むルールが優先されます。優先します。

それでは、セレクターの特異性をどのように計算するのでしょうか?下の図は、特異度の計算方法を示しています。

CSS セレクターの重みと優先順位のルール

特異度を 4 つのレベルに分け、各レベルの値にセレクターの個性を掛け合わせます。このレベルの重み、そして最後にすべてのレベルの値を加算してセレクターの特別な値を取得します。

4 つのレベルは次のように定義されます:

第 1 レベル: などの、重み 1000 のインライン スタイルを表します。
第 2 レベル: 重み 100 の #content などの ID セレクターを表します。
第 3 レベル: 重み 10 の代表クラス、疑似クラス、属性セレクター (.content など)。
第 4 レベル: 重み 1 の型セレクターと pp などの疑似要素セレクターを表します。

たとえば、上の図では、#NAV が第 2 クラスのセレクター、.ACTIVE が第 3 クラスのセレクター、UL、LI、A が第 4 クラスのセレクターです。この場合、セレクター式全体の特異性の値は 1*100+1*10+3*1=113 になります。

いくつかの計算例を示します:

CSS セレクターの重みと優先順位のルール

注: ユニバーサル セレクター (*)、サブセレクター ( >) と隣接する兄弟セレクター (+) はこれら 4 つのレベルにないため、それらの重みはすべて 0 になります。
具体的な例を見てみましょう: 次のスタイル ルールのセットがある場合、HTML コード内の 2 つのタイトルが何色であるかわかりますか?

#content p#main-content h2{   
    color:red;   
}   

#content #main-content>h2{   
    color:blue
}   
body #content p[id="main-content"] h2{   
    color:green;   
}   

#main-content p.paragraph h2{   
    color:orange;   
}   
#main-content [class="paragraph"] h2{   
    color:yellow;   
}   
p#main-content p.paragraph h2.first{   
    color:pink;   
}

以下は HTML コードです:

<p id="content">
    <p id="main-content">
        <h2>CSS简介</h2>
        <p>CSS(Cascading Style Sheet,可译为“层叠样式表”或“级联样式表”)是一组格式设置规则,用于控制Web页面的外观。</p>
        <p class="paragraph">
            <h2 class="first">使用CSS布局的优点</h2>
            <p>1、表现和内容相分离 2、提高页面浏览速度 3、易于维护和改版 4、使用CSS布局更符合现在的W3C标准.</p>
        </p>
    </p>
</p>

理解できましたか?答えは、どちらのタイトルも赤です。
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の高得点で勝利このスタイル セレクターの特異性コンテストのチャンピオンシップは、以下のルールの一部がより複雑に見えますが、特異性は、誰のセレクター式が長く記述されるかということではありません。これが王道です。
セレクターの特性を理解することは、特にバグを修正する場合に重要です。なぜなら、どのルールが優先されるのか、またその理由を理解する必要があるからです。
機能していないと思われる CSS ルールが見つかった場合は、特異性の競合が発生している可能性があります。より具体的にするには、親要素のいずれかの ID をセレクターに追加してください。これで問題が解決した場合は、スタイルシートの別の場所に、あなたのルールをオーバーライドするより具体的なルールがある可能性があります。この場合、コードを見直して特異性の競合を解決し、コードをできるだけ簡潔にすることができます。


CSS セレクターの重みと優先順位のルールに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。