- CSS Tutorial
- CSS - Home
- CSS - Introduction
- CSS - Syntax
- CSS - Selectors
- CSS - Inclusion
- CSS - Measurement Units
- CSS - Colors
- CSS - Backgrounds
- CSS - Fonts
- CSS - Text
- CSS - Images
- CSS - Links
- CSS - Tables
- CSS - Borders
- CSS - Border Block
- CSS - Border Inline
- CSS - Margins
- CSS - Lists
- CSS - Padding
- CSS - Cursor
- CSS - Outlines
- CSS - Dimension
- CSS - Scrollbars
- CSS - Inline Block
- CSS - Dropdowns
- CSS - Visibility
- CSS - Overflow
- CSS - Clearfix
- CSS - Float
- CSS - Arrows
- CSS - Resize
- CSS - Quotes
- CSS - Order
- CSS - Position
- CSS - Hyphens
- CSS - Hover
- CSS - Display
- CSS - Focus
- CSS - Zoom
- CSS - Translate
- CSS - Height
- CSS - Hyphenate Character
- CSS - Width
- CSS - Opacity
- CSS - Z-Index
- CSS - Bottom
- CSS - Navbar
- CSS - Overlay
- CSS - Forms
- CSS - Align
- CSS - Icons
- CSS - Image Gallery
- CSS - Comments
- CSS - Loaders
- CSS - Attr Selectors
- CSS - Combinators
- CSS - Root
- CSS - Box Model
- CSS - Counters
- CSS - Clip
- CSS - Writing Mode
- CSS - Unicode-bidi
- CSS - min-content
- CSS - All
- CSS - Inset
- CSS - Isolation
- CSS - Overscroll
- CSS - Justify Items
- CSS - Justify Self
- CSS - Tab Size
- CSS - Pointer Events
- CSS - Place Content
- CSS - Place Items
- CSS - Place Self
- CSS - Max Block Size
- CSS - Min Block Size
- CSS - Mix Blend Mode
- CSS - Max Inline Size
- CSS - Min Inline Size
- CSS - Offset
- CSS - Accent Color
- CSS - User Select
- CSS Advanced
- CSS - Grid
- CSS - Grid Layout
- CSS - Flexbox
- CSS - Visibility
- CSS - Positioning
- CSS - Layers
- CSS - Pseudo Classes
- CSS - Pseudo Elements
- CSS - @ Rules
- CSS - Text Effects
- CSS - Paged Media
- CSS - Printing
- CSS - Layouts
- CSS - Validations
- CSS - Image Sprites
- CSS - Important
- CSS - Data Types
- CSS3 Tutorial
- CSS3 - Tutorial
- CSS - Rounded Corner
- CSS - Border Images
- CSS - Multi Background
- CSS - Color
- CSS - Gradients
- CSS - Box Shadow
- CSS - Box Decoration Break
- CSS - Caret Color
- CSS - Text Shadow
- CSS - Text
- CSS - 2d transform
- CSS - 3d transform
- CSS - Transition
- CSS - Animation
- CSS - Multi columns
- CSS - Box Sizing
- CSS - Tooltips
- CSS - Buttons
- CSS - Pagination
- CSS - Variables
- CSS - Media Queries
- CSS - Functions
- CSS - Math Functions
- CSS - Masking
- CSS - Shapes
- CSS - Style Images
- CSS - Specificity
- CSS - Custom Properties
- CSS Responsive
- CSS RWD - Introduction
- CSS RWD - Viewport
- CSS RWD - Grid View
- CSS RWD - Media Queries
- CSS RWD - Images
- CSS RWD - Videos
- CSS RWD - Frameworks
- CSS References
- CSS - Questions and Answers
- CSS - Quick Guide
- CSS - References
- CSS - Color References
- CSS - Web browser References
- CSS - Web safe fonts
- CSS - Units
- CSS - Animation
- CSS Resources
- CSS - Useful Resources
- CSS - Discussion
CSS - Pseudo-element - ::slotted()
The ::slotted() pseudo-element represents an element that has a slot attribute on it. Unlike ::part() pseudo-element, the ::slotted() pseudo-element remains encapsulated in the <style> element in the web component's <template>.
This pseudo-element is effective only when used inside CSS placed within a shadow DOM.
Syntax
selector::slotted(<compound-selector>) { /* ... */ }
CSS ::slotted Example
Here is an example of ::slotted() pseudo-element. In this example:
A template is being used with three slots.
A custom element 'sample-card' is defined.
The CSS styling have been added in the <style> block within the <template>.
The slots are to be declared first, with either a class name or an id.
The declared slots are called later in the html code, using the class name or the id.
In case, the class name or id identifier, does not match with the one that is declared, the slot's description is rendered.
Try and change the class name or id or the styling and see the changed effect.
<html> <head> </head> <body> <template id="sample-template"> <style> ::slotted(.p-text) { background-color: lavender; } h2::slotted(.heading) { background: silver; } ::slotted(#footer-text) { background-color: lightsteelblue; border: 2px solid black; } </style> <div> <h2><slot name="heading">title goes here</slot></h2> <slot name="p-text">content goes here</slot> <slot name="footer-text">Footer here</slot> </div> </template> <sample-card> <span class="heading" slot="heading">::Slotted Example</span> <p class="p-text" slot="p-text">Paragraph text</p> <p id="footer-text" slot="footer-text">Footer text</p> </sample-card> <script> customElements.define( 'sample-card', class extends HTMLElement { constructor() { super(); const template = document.getElementById('sample-template'); const shadow = this.attachShadow({ mode: 'open' }); shadow.appendChild(template.content.cloneNode(true)); const elementStyle = document.createElement('style'); elementStyle.textContent = ` div { width: 250px; border: 5px inset green; border-radius: 2px; padding: 5px; }`; shadow.appendChild(elementStyle); const cssTab = document.querySelector('#css-output'); const editorStyle = document.createElement('style'); editorStyle.textContent = cssTab.textContent; shadow.appendChild(editorStyle); cssTab.addEventListener('change', () => { editorStyle.textContent = cssTab.textContent; }); } }, ); </script> </body> </html>
To Continue Learning Please Login
Login with Google