shadow DOM styles
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
Web Components โฉ Shadow DOM โฉ
MDN โฉ
CSS โฉ
Google โฉ
Web Component โฉ
:host, :host(), :host-context() only works in the context of a shadow root, you can't use it outside of shadow DOM.
:host - <custom-dialog>, <user-card>, <element-details>
:host() - <custom-dialog>, <element-details>
::slotted() - <user-card>, <element-details> ๐ slotted content
<body class="darktheme">
<fancy-tabs>
...
</fancy-tabs>
</body>
/*
โญ๏ธ :host-context(<selector>) โญ๏ธ
-------------------------
select host if it or any of its ancestors matches <selector>.
*/
:host-context(.darktheme) {
color: white;
background: black;
}
/*
โญ๏ธ won't select text node placed into slot (only elements)
*/
/* selects any element placed inside a slot */
::slotted(*) {
font-weight: bold;
}
/* selects any <span> placed inside a slot */
::slotted(span) {
font-weight: bold;
}
/* โญ๏ธ select host element (from inside shadow DOM) */
:host {
/* โญ๏ธ by default, custom elements are `display: inline` */
display: block;
/* CSS containment */
contain: content;
}
:host {
opacity: 0.4;
will-change: opacity;
transition: opacity 300ms ease-in-out;
}
/*
โญ๏ธ :host(<selector>) โญ๏ธ
-----------------
target the host if it matches a <selector>.
*/
:host(:hover) {
opacity: 1;
}
:host([disabled]) { /* style when host has disabled attribute. */
background: grey;
pointer-events: none;
opacity: 0.4;
}
:host(.blue) {
color: blue; /* color host when it has class="blue" */
}
:host(.pink) > #tabs {
color: pink; /* color internal #tabs node when host has class="pink". */
}