CSS - Pseudo-element - ::part()



Description

The ::part() pseudo-element in CSS is used to represent an element within a shadow tree, that has a matching part attribute; i.e. the ::part() pseudo-element acts like a function and takes the part as an argument.

part attribute is a global attribute, that represents a space-separated list of part names of an element. These part names allows to select and style the specific elements of a shadow tree, using the ::part() pseudo-element.

Syntax

 selector::part(+) { /* ... */ } 

CSS ::part() Example

Here is an example of ::part() pseudo-element. In this example:

  • A template is created using JavaScript (new-widget).

  • Declare a part of the template as widget.

  • Passing 'widget' as argument to the ::part() pseudo-element, where CSS styling is specified.

  • As the part (widget) contains a <p> tag, the CSS style is applied on this <p> tag.

 <html> <head> <style> .container { max-width: 500px; margin: 0 auto; padding: 2em; } body { font: 1em/1.618 Segoe UI, sans-serif; } new-widget::part(widget) { max-width: 300px; padding: 1em; background-color: lightgoldenrodyellow; border-radius: 20%; } </style> </head> <body> <div class="container"> <p>This paragraph is rendered as normal without any style.</p> <template id="new-widget"> <div part="widget"> <p>This paragraph is rendered as a part of the main paragraph and thus the ::part() pseudo-element is applied here.</p> </div> </template> <new-widget></new-widget> <script> let template = document.querySelector("#new-widget"); globalThis.customElements.define( template.id, class extends HTMLElement { constructor() { super() .attachShadow({ mode: "open" }) .append(template.content); } } ); </script> </div> </body> </html> 
Advertisements