The CSS Cascade を読んだメモ
The CSS Cascade を読んで、メモ。
- Cascading Style Sheetsの「Cascading」について説明している記事。
- カスケードは、よく理解していないと非常に苛立つ概念。
!importantと記述して強引に解決したくなる。 -
The CSS Cascade is the way our browsers resolve competing CSS declarations.
- CSSのカスケードとは、ブラウザーが競合するCSS宣言を解決する方法。
- CSSの宣言があるたびに、その宣言はカスケードの中に入る。
- カスケードの下層にあるものは上層のものから上書きされる可能性がある。
- カスケードの各層は以下。
-
- 重要度
-
- オリジン
-
- 詳細度
-
- 順序
-
- カスケードの各層の詳細は、
-
- 重要度
- この層には4種類ある。
-
- transition
transitionプロパティーがある場合、そのプロパティーは他のプロパティーよりも優先される。!importantよりも優先される。
-
- !important
-
- animation
animationプロパティーは、!importantより優先されるものではないけど、他の通常のプロパティーより優先される。
-
- 通常のプロパティー
-
- アニメーションを適切に動かすために優先されるものと
!importantのための層。 - この層で差異が付かない場合、次の層で解決するかを見ることになる。
-
- オリジン
- この層では、どこで宣言されているかによって分類される。
-
- ウェブサイト
-
- ユーザー
-
- ブラウザー
- 各ブラウザーが持つデフォルトのスタイルシート。
-
-
- 詳細度
- この層ではルールの詳細度が見られる。5つに分類される。
-
style属性
- HTMLの
style属性が最も高い詳細度となる。
-
@layer
- @layer - CSS: カスケーディングスタイルシート | MDN
-
@layer は CSS のアットルールで、カスケードレイヤーを宣言するために使用し、また複数のカスケードレイヤーがある場合に、優先順位を定義するためにも使用することができます。
-
- モダンブラウザーでは十分にサポートされている。
-
idセレクター
#idセレクターが該当する。
-
classセレクター, 擬似クラスセレクター, 属性セレクター
.class、:hover、[type="text"]などが該当する。
-
- 要素セレクター、擬似要素セレクター
div、a、::beforeなどが該当する。
-
*や>のようなセレクターは詳細度に影響しない。
-
- 順序
- 最後の層では、順番が決め手になる。
- 後方にあるものが前方にあるものを上書きする。
-
- The cascade | web.dev
- web.devにも詳細な説明がある。
- CSSのカスケードの仕様を読むのがいい。