:has-slotted
:has-slotted は CSS の擬似クラスで、 <slot> 要素のコンテンツが空ではないか、または既定値を使用していない場合に一致します(詳細については、テンプレートとスロットの使用を参照してください)。
メモ: 単一の空白テキストノードでも :has-slotted が適用されます。
これは、シャドウ DOM 内に配置された CSS 使用した場合にのみ動作します。
css
/* 既定ではないコンテンツを持つ <slot> 要素のコンテンツを選択 */ :has-slotted { color: green; }
/* コンテンツまたは既定のコンテンツを持たない <slot> 要素のコンテンツを選択 */ :not(:has-slotted) { color: red; }
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| | | 136 | | | | |
基本構文
CSS
slot:has-slotted {
border: 1px solid blue;
padding: 8px;
}
slot:not(:has-slotted) {
color: gray;
} ライブデモ
実務での使いどころ
-
スロットの状態に応じたスタイリング
Web Componentのスロットにコンテンツが挿入されている場合のみ装飾を適用し、フォールバック表示時は異なるスタイルにします。
注意点
- 2026年3月時点でFirefoxのみの対応であり、他のブラウザでは利用できません。
アクセシビリティ
- スロットのコンテンツ有無によるスタイル変更が、コンテンツの可視性やコントラストに悪影響を及ぼさないよう注意してください。