CSS辞書

@layer

その他

スタイルの優先順位を詳細度ではなく「レイヤーの宣言順」で管理するカスケードレイヤーです。reset・base・components・utilitiesのような層に分ければ、詳細度バトルや!importantの乱用を根本から解消できます。

構文

Syntax
@layer <layer-name>, ...; / @layer <layer-name> { <rules> }

コード例

1

/* 先に優先順位を宣言(後ろほど強い) */ @layer reset, base, components, utilities; @layer base { a { color: #2563eb; } } @layer components { .button { color: white; } }

レイヤー順で優先度を管理(詳細度に依存しない)

2

/* 外部CSSをレイヤーに隔離して上書きしやすくする */ @import url('vendor.css') layer(vendor); @layer vendor, overrides; @layer overrides { .vendor-widget { margin: 0; } }

ライブラリのCSSを弱いレイヤーに閉じ込める

💡 TIPS

「レイヤーに属さないスタイルは全レイヤーより強い」がルールです。これを利用して、通常のスタイルを最後の砦にできます。ファイル冒頭で@layer a, b, c;と順序だけ先に宣言しておくのが定石です。

⚠️ よくある間違い

!importantが付くとレイヤーの優先順位が逆転します(先に宣言したレイヤーの!importantが最強)。この仕様は直感に反するため注意。また@layer内のスタイルはレイヤー外の同セレクタに必ず負けるので「効かない」と混乱しがちです。

🤖 AIがよく間違えるポイント

AIは詳細度の競合に対して:where()での詳細度ゼロ化や!important、セレクタの詳細度引き上げを提案しがちで、@layerによる構造的な解決を出さないことが多いです。また「!importantはレイヤー順が逆転する」「レイヤー外がレイヤー内より強い」という2つの反直感ルールはAIも頻繁に間違えます。

💬 AIへの頼み方

このCSSをreset/base/components/utilitiesの@layer構成に再編して、!importantを全廃して

サードパーティのCSSがサイトのスタイルを壊すので、@importのlayer()で隔離する設計にして

@layerと!importantの優先順位の関係を、このコードが効かない原因として調査して

そのままAIチャットに貼り付けて使える依頼文の例です。ページ上部の「AI用にコピー」でこのページ全体をコンテキストとして渡せます。

関連プロパティ

ブラウザサポート

Baseline 広く利用可能
Chrome
99+
Firefox
97+
Safari
15.4+
Edge
99+