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

推薦する

CocosCreator でカメラトラッキングに cc.follow を使用する方法

Cocos Creator バージョン: 2.3.4デモのダウンロード: https://files...

MySQL の大文字と小文字の区別に関する注意

目次MySQLの大文字と小文字の区別はパラメータによって制御されますMySQLの大文字と小文字の区別...

HTMLは入力完了を検出する機能を実装する

入力が進行中かどうかを検出するには、「onInput(event)」を使用しますコンテンツが変更され...

Vueは完全な選択機能を実装しています

この記事の例では、完全な選択機能を実装するためのVueの具体的なコードを参考までに共有しています。具...

Nginx シグナル制御

Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

VMware は Centos7 システムの PXE+kickstart 無人インストールの詳細なプロセスを実装します

目次PXEはサーバーの無人バッチ展開を実装します1. PXEの概要1.1 PXEとは何か1.2 キッ...

YUM を使用して Linux (CentOS 7) に MySQL 5.7.18 をインストールする方法の詳細なチュートリアル

このプロジェクトでは MySQL を使用する必要があります。これまで Windows では常に確実に...

nginx を使用して特定のインターフェース (URL) をブロックする方法

1. はじめに場合によっては、Web プラットフォームがオンラインになった後、サービス インターフェ...

システムメンテナンスページにリダイレクトするように nginx を設定する

先週末、兄弟プロジェクトはより良いサービスを提供するためにサーバーを拡張する準備をしていました。兄弟...

Vue でユーザー権限に基づいてルートを動的に追加する方法

ユーザーの権限に応じて異なるメニュー ページを表示します。知識ポイントルートガード(事前ガードを使用...

ウェブページの読み込み速度を上げる25の方法とヒント

はじめに<br />誰もが高速インターネット接続にアクセスできるわけではありません。たと...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...

mySQLキーワードの実行優先度の説明

以下のように表示されます。表から条件フィールドでグループ化仮想テーブルとフィールドを作成し、フィール...

HTML のブロックレベル要素と行レベル要素、特殊文字、ネスト規則

基本的な HTML Web ページ タグのネスト ルールを紹介する場合、最初に説明する必要があるのは...