:scope (pseudo-class)
:scope は CSS の擬似クラスで、セレクターが選択する対象の参照点である要素を表します。
css
/* スコープとなる要素を選択 */ :scope { background-color: lime; }
どの要素が :scope に一致するかは、それが使用されるコンテキストによって変わります。
スタイルシートのルートレベルで使用する場合、 :scope は :root と等価であり、通常の HTML 文書内の <html> 要素に一致します。
@scope ブロックの中で使用した場合、 :scope はブロックの定義するスコープのルートに一致します。これは @scope ブロック自身からスコープのルートにスタイル設定を適用する方法を提供します。
DOM API 呼び出し(querySelector(), querySelectorAll(), matches(), Element.closest() など)で使用した場合、 :scope はメソッドを呼び出した要素を選択します。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 27 | 79 | 32 | 7 | 27 | 7 | |
dom api 「querySelector()」や「querySelectorAll()」などの DOM API でのサポート | 27 | 79 | 32 | 7 | 27 | 7 |
注釈 1件
削除済み
- Firefox 55 では、`<stylescoped>` のサポートが削除されますが、`:scope` 疑似クラスのサポートは削除されず、引き続きサポートされます。 `<stylescoped>` により要素スコープを明示的に設定できるようになりましたが、この機能の設計に関する継続的な議論と他の実装の不足により、この機能を削除することが決定されました。
基本構文
CSS
@scope (.card) {
:scope {
border: 1px solid #ddd;
padding: 16px;
}
:scope > h2 {
margin-top: 0;
}
} ライブデモ
実務での使いどころ
-
スコープ付きスタイルの基準指定
@scopeルールやquerySelectorのコンテキストで、スコープの起点となる要素自体にスタイルを適用します。
注意点
- グローバルスタイルシート内の:scopeは:rootと同等であり、特別なスコーピング効果はありません。
アクセシビリティ
- :scopeによるスタイルの限定は視覚的な影響のみであり、DOMの構造やアクセシビリティツリーには影響しません。