CSS辞書

@scope

その他

スタイルの適用範囲を特定の要素の部分木に限定するアットルールです。下限(to)も指定でき、「カードの中だけ、ただし埋め込みウィジェットの中は除く」のような範囲指定が可能。BEM的な命名規則に頼らないスコープ管理を実現します。

構文

Syntax
@scope (<scope-start>) [to (<scope-end>)] { <rules> }

コード例

1

@scope (.card) { img { border-radius: 8px; } :scope { padding: 1rem; } }

.card配下のimgだけに適用(:scopeはカード自身)

2

/* .content内、ただし.embedの中は対象外 */ @scope (.content) to (.embed) { p { line-height: 1.9; } }

下限(ドーナツスコープ)で埋め込み領域を除外

💡 TIPS

同じ詳細度なら「スコープ根に近い方が勝つ」近接性ルールが加わるのが@scopeの特徴です。テーマの入れ子(ライトの中にダークカードがある等)で威力を発揮します。

⚠️ よくある間違い

スコープ内のセレクタは自動で範囲限定されますが、詳細度自体は変わりません。またスコープ根自身を対象にするには:scopeを使います(@scope (.card) { .card {...} }とは書かない)。

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

AIはスタイルの衝突回避にBEM命名やCSS Modulesを前提としがちで、ネイティブの@scopeを提案に含めないことが多いです。AIの知識では「Chrome限定」と古い場合がありますが、Firefoxも2025年末に対応しBaseline入りしています。近接性(proximity)という新しい競合解決ルールはAIの説明が不正確になりやすい領域です。

💬 AIへの頼み方

このBEM命名だらけのカードコンポーネントCSSを@scopeでスコープ管理する形に書き換えて

記事本文のタイポグラフィを、埋め込みウィジェット内を除外して適用したい。@scopeのto構文で実装して

ネストしたライト/ダークテーマの上書きを@scopeの近接性ルールで解決できるか検討して

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

関連プロパティ

ブラウザサポート

Baseline 新しく利用可能2025年12月〜)
Chrome
118+
Firefox
146+
Safari
17.4+
Edge
118+