CSS スタイルの競合を解決するいくつかの方法 (要約)

CSS スタイルの競合を解決するいくつかの方法 (要約)

1. セレクターを調整する

コンビネータを使用すると、セレクターの説明をより正確に記述できます (CSS セレクター - MDN を参照)。たとえば、次のコード スニペットでは、.cellphones 内の .apple にスタイルを追加する場合、.apple のみを使用すると、必然的に .fruit 内の .apple にも影響します。

<div class="携帯電話">
  <div class="apple"></div>
</div>
<div class="フルーツ">
  <div class="apple"></div>
</div>

より正確な説明は、子孫コンビネータまたは子コンビネータです。説明が正確であればあるほど、優先度が高くなります。優先度の高い説明は、優先度の低い説明よりも優先されます。

/* 子孫コンバイナ: すべての子孫ノード */
.携帯電話 .apple {
 境界線: 1px 黒一色;
}

/* より正確な子孫コンビネータ */
本文.携帯電話.apple {
  境界線: 1px 青
}

/* 子コンバイナ: 直接の子ノード */
.携帯電話 > .apple {
  境界線: 1px 実線の赤;
}

上記のスタイルをすべて .apple に順番に追加すると、境界線は最終的に青色で表示されます。

詳細な優先順位ルールについては、CSS Priorityを参照してください。

2.セレクタ名をもう一度書きます

本質的には前のケースの特殊なケースです。たとえば、.apple の場合は、次のスタイルを追加します。

.cellphones > .apple.apple {
  境界線: 1px 紫色;
}
.携帯電話 > .apple {
  境界線: 1px 実線の赤;
}

最終的に境界線は紫色になります。

3. CSSスタイルシートの順序を変更する

同じタイプセレクターによって指定されたスタイルの場合、CSS ファイル内の後続のスタイルが前のスタイルを上書きします。

たとえば、次のコードの div 要素の場合、ブラウザのレンダリング結果は赤になります。

<div class="redBorder" class="blackBorder"></div>
.blackBorder {
  境界線: 1px 黒一色;
}
.redBorder {
  境界線: 1px 実線の赤;
}

HTML ファイルでは .blackBorder が .redBorder の後に表示されますが、優先順位は CSS ファイル内の順序に基づいて決定されることに注意することが重要です。つまり、CSS ファイル内の後の .redBorder のみが使用されます。

4. 優先度を積極的に上げる(非推奨)

単純で大雑把な方法もありますが、これはお勧めできません。それは、使用したいスタイルの後にキーワード !important を追加して、スタイルの優先度を非常に高いレベルに上げるという方法です。例えば:

<div class="redBorder" class="greenBorder"></div>
.greenBorder {
  境界線: 1px 緑 !important;
}
.redBorder {
  境界線: 1px 実線の赤;
}

上記のコードでは、境界線が緑色で表示されます。

!important を使用するのは非常に悪い習慣であり、スタイルシートに固有のカスケード ルールに違反し、デバッグが非常に困難になります。

参考文献:
優先度 - MDN
CSS スタイルの競合を解決する方法 - Magic Time Machine

これで、CSS スタイルの競合を解決するいくつかの方法 (要約) に関するこの記事は終了です。関連する CSS スタイルの競合の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  ウェブページをデザインする際に注意すべきいくつかの問題

>>:  MySQL テーブルを返すとインデックスが無効になるケースの説明

推薦する

Vue3でアイコンを使用する2つの例

目次1. SVGを使用する2. fontAwesomeを使用する3 ソース4 結論テクノロジースタッ...

Vue router-viewとrouter-linkの実装原理

使用 <div id="アプリ"> <router-link ...

MySQL の instr を使用したファジー クエリ メソッドの紹介

MySQL の内部関数instrを使用すると、従来の like クエリ メソッドを置き換えることがで...

Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...

Linux で MySQL 8.0 サービスを完全に削除する方法

この記事を読む前に、Linuxコマンド、特にcentos7.3環境でyumを使用してインストールされ...

MySQLデータベースとテーブルシャーディングの概要

プロジェクトの開発中に、データベースのデータがどんどん大きくなり、その結果、1 つのテーブルにデータ...

MySQLカスタム変数の概念と特徴

MySQL カスタム値は、値を保存するための一時的なコンテナです。サーバーへの接続がアクティブである...

LinkedIn がウェブサイト閲覧を簡素化するためにリニューアル

ビジネス ソーシャル ネットワーキング サイト LinkedIn は最近、ナビゲーション バーとユー...

MySQLの日付文字列タイムスタンプ変換の詳細な説明

時刻、文字列、タイムスタンプ間の変換は、日常生活でよく使用されます。よく使用されますが、私は使用する...

Vueライフサイクル機能の詳細な説明

目次ライフサイクル関数一般的なライフサイクルフックVue のインスタンス破棄について:要約するライフ...

jsフェッチ非同期リクエストの使用の詳細な例

目次非同期を理解するフェッチ(url)レスポンス.json() asyncとawaitを組み合わせる...

MySQL 5.7 のスロークエリログの時間がシステム時間より 8 時間遅れている理由の詳細な説明

遅いクエリをチェックすると、時間が正しくなく、システム時間とちょうど 8 時間異なっていることがわか...

CSS 属性を使用してマウス イベントをブロックする方法 (マウス クリックは上位の要素を貫通する可能性があります)

由来: 数日前、テスターから写真を見るという要件が送られてきました。 この要件を見たとき、私は少し混...

MySQL における引用符とバックティックの違いと使い方の詳細な説明

序文そこでこのブログを書きました。このブログでは大物の記事からいくつかの知識も推奨しています。侵害が...

UDP シンプル サーバー クライアント コード例

UDP の理論については詳しく説明しません。UDP に関する HelloWorld プログラムを紹介...