:has-slotted
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The :has-slotted
CSS pseudo-class matches when the content of a <slot>
element is not empty or not using the default value (see Using templates and slots for more information).
Note: Even a single whitespace text node is sufficient to make :has-slotted
apply.
This only works when used inside CSS placed within a shadow DOM.
/* Selects the content of a <slot> element that has content that is not default */
:has-slotted {
color: green;
}
/* Selects the content of a <slot> element that has no content or default */
:not(:has-slotted) {
color: red;
}
Syntax
:has-slotted {
/* ... */
}
Examples
This example has two <slot>
elements, one of which has been assigned some content and the other has not.
HTML
<p>
<template shadowrootmode="open">
<style>
:has-slotted {
color: rebeccapurple;
}
</style>
<slot name="one">Placeholder 1</slot>
<slot name="two">Placeholder 2</slot>
</template>
<span slot="one">Slotted content</span>
</p>
Result
The <slot>
element that has been assigned content matched the :has-slotted
pseudo-class and has the color
value of rebbecapurple
applied.
Specifications
Specification |
---|
CSS Scoping Module Level 1 # the-has-slotted-pseudo |
Browser compatibility
BCD tables only load in the browser
See also
- HTML
<template>
element - HTML
<slot>
element ::slotted