<slot>: The Web Component Slot element
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
The <slot> HTML element—part of the Web Components technology suite—is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.
Attributes
This element includes the global attributes.
name-
The slot's name. When the slot's containing component gets rendered, the slot is rendered with the custom element's child that has a matching
slotattribute. A named slot is a<slot>element with anameattribute. Unnamed slots have the name default to the empty string. Names should be unique per shadow root: if you have two slots with the same name, all of the elements with a matchingslotattribute will be assigned to the first slot with that name.
Examples
<template id="element-details-template">
<style>
details {
font-family: "Open Sans Light", "Helvetica", "Arial", sans-serif;
}
.name {
font-weight: bold;
color: #217ac0;
font-size: 120%;
}
h4 {
margin: 10px 0 -8px 0;
background: #217ac0;
color: white;
padding: 2px 6px;
border: 1px solid #cee9f9;
border-radius: 4px;
}
.attributes {
margin-left: 22px;
font-size: 90%;
}
.attributes p {
margin-left: 16px;
font-style: italic;
}
</style>
<details>
<summary>
<code class="name">
<<slot name="element-name">NEED NAME</slot>>
</code>
<span class="desc"><slot name="description">NEED DESCRIPTION</slot></span>
</summary>
<div class="attributes">
<h4>Attributes</h4>
<slot name="attributes"><p>None</p></slot>
</div>
</details>
<hr />
</template>
Note: You can see this complete example in action at element-details (see it running live). In addition, you can find an explanation at Using templates and slots.
Technical summary
| Content categories | Flow content, phrasing content |
|---|---|
| Permitted content | Transparent |
| Events | slotchange |
| Tag omission | None, both the starting and ending tag are mandatory. |
| Permitted parents | Any element that accepts phrasing content |
| Implicit ARIA role | No corresponding role |
| Permitted ARIA roles | No role permitted |
| DOM interface | HTMLSlotElement |
Specifications
| Specification |
|---|
| HTML> # the-slot-element> |
| DOM> # shadow-tree-slots> |
Browser compatibility
Loading…
See also
- HTML
<template>element - HTML
slotattribute - CSS
::slottedpseudo-element - CSS
:has-slottedpseudo-class - CSS scoping module