ウェブページのCSSの優先順位について詳しく説明します

ウェブページのCSSの優先順位について詳しく説明します

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があります。

まず、CSS について簡単に説明します。CSS は Cascading Style Sheets の略です。その仕様は、インターネットの歴史におけるユニークな開発段階を表しています。現在、Web ページ制作に携わっている方であれば、Web ページの作成過程で CSS を使用する必要があることが多いため、CSS について聞いたことがない人はほとんどいないはずです。

2 つ目: CSS を使用して、ドキュメントの外観をリッチかつ簡単に変更できるように設定し、Web ページ作成者の作業負荷を軽減することで、制作コストとその後のメンテナンス コストを削減できます。

実際のところ、CSS とは何か、その機能とは何かを今さら語るのは全く冗長です。Web ページ制作に携わっている友人なら、すでにある程度は CSS に触れていると思います。

さて、今日の話題に戻りましょう。

1. CSS の優先度とは何ですか?

いわゆる CSS 優先度は、ブラウザで CSS スタイルが解析される順序を指します。

2. CSSの優先順位ルール

スタイルには優先順位があるため、優先順位を決定するルールがあり、この「ルール」がこの記事の焦点となります。

スタイル シートの詳細度は、さまざまなルールの相対的な重みを表します。基本的なルールは次のとおりです。

  1. セレクター内の ID 属性の数をカウントします。
  2. セレクター内の CLASS 属性の数を数えます。
  3. セレクター内の HTML タグ名の数をカウントします。

最後に、スペースやカンマを入れずに 3 つの数字を正しい順序で入力して、3 桁の数字を作成します (CSS 2.1 では 4 桁を使用します)。 (数字を 3 桁で終わる大きな数字に変換する必要があることに注意してください)。セレクターに対応する番号の最終的なリストにより、どの番号が大きい機能が低い番号の機能をオーバーライドするかを簡単に判断できます。

例えば:

  1. 各 ID セレクター (#someid) に 0,1,0,0 を追加します。
  2. 各クラスセレクター (.someclass)、各属性セレクター ([attr=value] など)、各疑似クラス (:hover など) に 0,0,1,0 を追加します。
  3. 各要素または疑似要素 (:firstchild) に、0,0,0,1 を追加します。
  4. その他のセレクターには、グローバル セレクター * と 0,0,0,0 が含まれます。追加しないことと同じですが、これも一種の特殊性であり、後で説明します。

3. 特徴分類のためのセレクタリスト

以下は、特性別に分類されたセレクターのリストです。

セレクタ特性値
h1 {色:青;} 1
p em {色:紫;} 2
.apple {色:赤;} 10
p.明るい{色:黄色;} 11
p.明るいem.暗い{色:茶色;} 22
#id316 {色:黄色} 100

上の表だけ見ると、理解しにくいようです。別の表を以下に示します。

セレクタ特性値
h1 {色:青;} 1
p em {色:紫;} 1+1=2
.apple {色:赤;} 10
p.明るい{色:黄色;} 1+10=11
p.明るいem.暗い{色:茶色;} 1+10+1+10=22
#id316 {色:黄色} 100

上記から、HTML タグの重みは 1、CLASS の重みは 10、ID の重みは 100、継承の重みは 0 (後述) であることが簡単にわかります。

これらの規則に従って、数値文字列を少しずつ追加して最終的な重みを取得し、比較を行うときに左から右に少しずつ比較します。

優先度の問題は、実際には競合解決の問題です。CSS セレクターによって同じ要素 (コンテンツ) が選択された場合、優先度に応じて異なる CSS ルールを選択する必要があります。実際には多くの問題が関係しています。

ここで、CSS の継承について説明しなければなりません。

複数の CSS スタイル ファイルが Web ページに読み込まれますが、そのうちの 1 つは Ext ライブラリに付属するスタイル ファイルであり、すべてのタグの一部のスタイルを定義しているため、元の Web ページが正しく表示されません。対応するスタイルを見つけることで、正しいスタイルがリセットされます。 body タグに新しいスタイルを追加しますが、2 つのスタイルが表示され、Ext スタイルは引き続き有効です。最後に、新しいスタイルを設定するときに * を追加しなかったため、body タグにのみ有効になり、サブタグには有効にならないことがわかりました。以下は修正されたスタイルです

コードをコピー
コードは次のとおりです。

.diy、
.diy *{
ボックスのサイズ: コンテンツボックス;
-moz-box-sizing: コンテンツボックス;
-webkit-box-sizing: コンテンツボックス;
}

タグに複数のスタイルが定義されていて、スタイル間に競合がある場合、優先順位は「ID に定義されたスタイル」>「クラスに定義されたスタイル」>「タグ タイプに定義されたスタイル」になります。例えば、次のスタイル

コードをコピー
コードは次のとおりです。

div{
境界線:2px 実線 #0000FF;
}
.パワーヘッダー{
境界線:2px 実線 #00ff00;
}
#ナビゲーション{
境界線:2px 実線 #ff0000;
}

<div id="navigation" class="powerHeader"> タグでは、まず #navigation が適用され、#navigation が存在しない場合は .powerHeader スタイルが適用され、最後に div スタイルが適用されます。
同時に、単一のリンクまたはスタイルを使用して複数のタグ クラスを定義することで競合が発生した場合は、最後に定義されたクラスが適用されます。
CSS スタイルの優先順位を理解することで、Web ページの開発における多くのスタイル競合の問題を回避できます。

<<:  node.js で PC 上の WeChat アプレット パッケージを復号化するための処理アイデア

>>:  HTMLページが3秒後に自動的にジャンプする3つの一般的な方法

推薦する

VueとFlask間の通信の実装

axiosをインストールして通信を実装するここでは、axios を使用して Vue フロントエンドと...

html の img src="" で js 関数または js 変数を呼び出して、画像パスを動的に指定します。

この問題に関して、オンライン リソースをたくさん見つけました。ここにいくつかの方法を示します。コード...

CN2、GIA、CIA、BGP、IPLC はどういう意味ですか?

CN2ラインとは何ですか? CN2 は、China Telecom Next Carrier Ne...

見落としがちなVue.jsのAPIを詳しく解説

目次次のチェックv-model 構文シュガー.sync 修飾子$セット計算プロパティセット要約する次...

Linux の vsftpd サービス構成の簡単な分析 (匿名、ユーザー、仮想ユーザー)

vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...

HTML+CSSを使用してマウスの動きを追跡する

ユーザーがプライバシーを意識するようになり、オンライン トラッキングに対する予防策を強化するにつれて...

純粋な CSS でカスタムラジオボタンとチェックボックス機能を実装する

1. 効果を達成する 2 知識ポイント2.1 <label> タグHTML では、<...

Vue 学習 - VueRouter ルーティングの基礎

目次1. Vueルーター1. 説明2. 選択したルートのレンダリング: 3. 基本的な動作原理2. ...

Vue テンプレート構成と Webstorm コード形式仕様設定

目次1. コンパイラコードフォーマット仕様設定2. Vueテンプレートの設定1. コンパイラコードフ...

nginx でネストされた if メソッドを実装する方法

Nginx はネストされた if ステートメントをサポートしておらず、if ステートメントでの論理判...

MySQL インデックスの長さ制限の原理の分析

この記事は主に、MySQL インデックスの長さ制限の原理の分析を紹介します。サンプル コードを通じて...

MySQL MGR 構築時の一般的な問題と解決策

目次01 よくある故障 1 02 よくある欠陥 2 03 よくある欠陥 3 04 よくある欠陥 4 ...

既存のMySQLデータベースの文字セットを統一する方法

序文データベースでは、一部のデータ テーブルとデータは latin1 であり、一部のデータ テーブル...

CentOS7にPostgreSQL11をインストールする方法

CentOS 7にPostgreSQL 11をインストールする PostgreSQL: 世界で最も先...

line-height=height要素の高さだがテキストが垂直方向に中央揃えされない問題を解決する

まず、行の高さが要素の高さと等しい場合にテキストが垂直方向に中央揃えにならない理由を説明します。実際...