- From: Noam Rosenthal via GitHub <noreply@w3.org>
- Date: Mon, 01 Sep 2025 10:04:33 +0000
- To: public-css-archive@w3.org
A way to approach this that might also address some of the other use cases like #12575, is to have an explicit observer for (tree-abiding) pseudo-element creation/removal, that is triggered during the style/layout loop (at the same time as `ResizeObserver`). It would only work for tree-abiding and view-transition pseudo elements, but will give the developer an actual handle to that object, on which they can run all the different commands (`addEventListener`, `getBoundingClientRect`, `animate`, `ResizeObserver`, `IntersectionObserver`...). This observer would be similar to the `slotchange` event or `MutationObserver` callback in the sense that the author would receive handles to nodes that are "from a different tree", however that "pseudo-tree" would be read-only, and any attempt to modify it (e.g. add/remove/set attribute) would result in a `HierarchyError` or some such (some details of this can be further fleshed out). Note that these pseudo-elements might be removed by the next animation frame if the style changes... but in a way that's not different from slotting or from having elements from different sources that query each other using `MutationObserver`. Some code samples: ```js // with view transiitons new PseudoElementObserver(({addedPseudoElements, removedPseudoElements}) => { for (const vt_group of addedPseudoElements.filter(e => e.name === "view-transition-group")) { console.log(vt_group.getBoundingClientRect(); new IntersectionObserver(() => { console.log("The group has entered the viewport"); }).observe(vt_group); } }).observe(document.documentElement); new PseudoElementObserver(({addedPseudoElements, removedPseudoElements}) => { for (const vt_group of addedPseudoElements.filter(e => e.name === "marker")) { marker.addEventListener("click", () => console.log("This marker was clicked"); } }).observe(my_gallery); ``` -- GitHub Notification of comment by noamr Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/12158#issuecomment-3241722567 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 1 September 2025 10:04:34 UTC