【カスケードレイヤー】
カスケードレイヤー(@layer) とは?
最終更新:
💡 CSSのまとまりごとに、優先順位を決める
CSSの宣言を層に分け、層どうしの優先順位を管理する仕組み。@layerで順序を先に宣言できる。同じ由来・重要度などの条件で、レイヤーの順序はセレクタの詳細度より先に比較される。通常の宣言と!important付きでは、層の優先順が逆になる。
📌 このページのポイント
- @layerで宣言をグループ化し、層の順序を指定する
- 通常の宣言は、後に定義した層が優先される
- レイヤー外の通常宣言は、層内の通常宣言より優先される
- 同じ層の中では、詳細度や書き順も関係する
@layerを使うと、CSSの何を整理できるの?
スタイルのまとまりごとの優先順位だよ。例えば@layer base, app;と先に宣言すると、通常の宣言ではappがbaseより優先される。同じ由来や重要度などの条件なら、層の違いを詳細度より先に比較するんだ
詳細度は、もう考えなくていい?
同じ層の中では、セレクタの詳細度や書き順も使うよ。また、!importantやインラインスタイル、ブラウザーや利用者のスタイルなどもカスケードに関わる。@layerだけで全部の優先順位が決まるわけではないんだ
!importantを付けると、順番が変わるの?
そうだよ。同じ由来で!important付き同士なら、先に定義した層が優先される。層内の!importantは層外の!importantより優先される。通常宣言同士の順序とは逆で、!important付き宣言は通常宣言より強いんだ
途中で同じレイヤーを書いたら、順番も移る?
名前が最初に現れたときの順序は変わらず、その層にルールが追加されるよ。層を入れ子にもできる。最初に順序を宣言しておくと、別ファイルにルールを追加しても、層の意図を共有しやすいんだ
まとめ:ざっくりこれだけ覚えればOK!
「カスケードレイヤー」って出てきたら「CSSを層に分け、層どうしの優先順位を管理する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cascade Layers」 = カスケードの層
💬 cascadeはCSSでどの宣言を採用するか決める仕組み、layerは層という意味だよ。画面の重なり順を指定するz-indexとは別の話なんだ