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 テーブルを返すとインデックスが無効になるケースの説明

推薦する

JavaScript 配列の Reduce() メソッドの構文と例の分析

序文Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が単一の値...

LinuxでifconfigとaddrがIPアドレスを表示できない問題を解決する

1. 仮想マシンにLinuxシステムをインストールし、仮想マシンを起動し、rootとパスワードを入力...

1 つの記事で JSON (JavaScript Object Notation) を理解する

目次JSONが登場JSON構造JSONオブジェクトJson オブジェクトと JavaScript オ...

Vue で $props、$attrs、$listeners を使用する方法の詳細な説明

目次背景1. 文書の説明2. 特定の用途結論背景ここで、状況について説明しましょう。親コンポーネント...

CentOS7で新しいデータディスクをマウントするための完全な手順

序文新しい VPS を購入しました。新しい VPS のデータ ディスクはデフォルトではシステムにマウ...

Docker コンテナのネットワーク設定によく使われるコマンドの詳しい説明

基本的なネットワーク構成Docker はイメージに基づいて複数のコンテナを「開く」ことができ、各コン...

MySQL 5.7.11 zip インストールと設定方法のグラフィックチュートリアル

1. MySQL 5.7.11 zipインストールパッケージをダウンロードするこのマシンはwin7 ...

Java を Mysql バージョン 8.0.18 に接続する方法の詳細な説明

JavaとMysql 8.0.18バージョンの接続方法については、参考までに具体的な内容は以下のとお...

2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...

Robots.txtの詳細な紹介

Robots.txt はプレーンテキスト ファイルであり、Web サイト管理者は、ロボットによるアク...

マウス追従ゲームを実現するjs

この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...

MySQLにおけるテーブルインデックスの定義方法と導入

概要インデックスは、テーブル内の 1 つ以上の列に基づいて DBMS によって特定の順序で作成される...

mysql ステートメントを使用してユーザー権限を照会するプロセスの詳細な説明

MySQL では、ユーザーに付与された権限をどのように確認しますか? ユーザーに付与される権限は、グ...

CSS 境界線の長さ制御機能の実装

以前は、境界線の長さをコンテナーよりも小さくする必要があったときに、div ネストを使用していました...

MySql Group Byは複数のフィールドのグループ化を実装します

日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、...