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

高洛峰
リリース: 2017-03-02 15:18:41
オリジナル
1558 人が閲覧しました

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 コードです:

CSS简介

CSS(Cascading Style Sheet,可译为“层叠样式表”或“级联样式表”)是一组格式设置规则,用于控制Web页面的外观。

使用CSS布局的优点

1、表现和内容相分离 2、提高页面浏览速度 3、易于维护和改版 4、使用CSS布局更符合现在的W3C标准.

ログイン後にコピー

理解できましたか?答えは、どちらのタイトルも赤です。
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 サイトに注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!