CSS の重みと優先度の問題
CSS 属性の指定された値は、次の 3 つの方法で取得されます。
まず、指定された値は、スタイル カスケード (スタイル シート内で最も重みが高いルールを選択する)、継承 (属性を継承できる場合は親要素の値を取得する)、またはデフォルト値から取得されます。
優先順位
優先度は、各セレクター タイプによって形成される連結文字列に基づいて計算されます。マッチング式に対応した重みです。
優先順位が同じ場合、後の CSS が要素に適用されます。
以下は優先度の高いセレクターのリストです:
ユニバーサルセレクター(*)
!重要なルールがスタイル宣言に適用されると、スタイル宣言は宣言リストのどこにあるかに関係なく、CSS 内の他の宣言をオーバーライドします。ただし、!重要なルールは優先度とは関係ありません。 ! important を使用すると、スタイルシートの元のカスケード ルールが変更され、デバッグが困難になるため、推奨されません。
いくつかの経験則:
サイト全体の CSS では ! important を決して使用しないでください! important をオーバーライドする方法
簡単です。 ! important を追加するだけです。 CSS ステートメントを作成し、それをより高い優先度のセレクターに適用します (元のベースに追加のタグ、クラス、または ID セレクターを追加します):not 否定された擬似クラスは、優先度の計算では擬似クラスとはみなされません。実際、セレクターの数を計算するとき、セレクターは通常のセレクターとしてカウントされます。 DOM ツリー内の距離を無視します
次のスタイル宣言があります:
body h1 { color: green;}html h1 { color: purple;}
次の HTML に適用される場合:
<html><body> <h1>Here is a title!</h1></body></html>
ブラウザはそれを紫色で表示します。つまり、後のものが優先されます。
マージンの結合
マージンの結合は最初は少し奇妙に思えるかもしれませんが、実際には理にかなっています。たとえば、いくつかの段落で構成される典型的なテキスト ページを考えてみましょう。最初の段落の上のスペースは、段落の上マージンと同じです。マージンを結合しない場合、後続のすべての段落間のマージンは、隣接する上マージンと下マージンの合計になります。これは、段落間のスペースがページの上部の 2 倍であることを意味します。マージンのマージが発生すると、段落間の上下のマージンがマージされ、どこでも距離が一定になります。
CSS では、置換可能な要素とは、プレゼンテーションが CSS によって制御されない要素です。これらの外部要素の表現は CSS 仕様に依存しません。 典型的な置換可能な要素には、、
CSS は、マージンの計算や auto の値の処理など、置換可能な要素に対して特別な処理を実行する場合があります。
一部の (すべてではない) 置換可能な要素にはサイズとベースライン自体があり、vertical-align などの一部の CSS プロパティで使用されることに注意してください。