This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The CSSPseudoElement interface represents a pseudo-element that may be the target of an event or animated using the Web Animations API. Instances of this interface may be obtained by calling Element.pseudo().
Properties
CSSPseudoElement.elementRead only- Returns the originating/parent
Elementof the pseudo-element. CSSPseudoElement.typeRead only- Returns the pseudo-element selector as a
CSSOMString.
Methods
CSSPseudoElement extends EventTarget, so it inherits the following methods:
EventTarget.addEventListener()- Registers an event handler of a specific event type on the pseudo-element.
EventTarget.dispatchEvent()- Dispatches an event to this pseudo-element.
EventTarget.removeEventListener()- Removes an event listener from the pseudo-element.
Examples
Basic example using Element.pseudo
Using pseudo-elements, most modern browsers will automatically add quotation marks around text inside a <q> element. (A style rule may be needed to add quotation marks in older browsers.) The example below demonstrates the basic properties of the CSSPseudoElement object representing the opening quotation mark.
const element = document.querySelector('q');
const cssPseudoElement = element.pseudo('::before');
console.log(cssPseudoElement.element); // Outputs [object HTMLQuoteElement]
console.log(cssPseudoElement.type); // Outputs '::before'
Specifications
| Specification | Status | Comment |
|---|---|---|
| CSS Pseudo-Elements Level 4 The definition of 'CSSPseudoElement' in that specification. |
Working Draft | Initial definition. |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
CSSPseudoElement | Chrome No support No | Edge No support No | Firefox
Full support
75
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android
Full support
63
| Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
element | Chrome No support No | Edge No support No | Firefox
Full support
75
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android
Full support
67
| Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
type | Chrome No support No | Edge No support No | Firefox
Full support
75
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android
Full support
63
| Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
Legend
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- User must explicitly enable this feature.
- User must explicitly enable this feature.
- Uses a non-standard name.
- Uses a non-standard name.
