- From: Yehonatan Daniv via GitHub <sysbot+gh@w3.org>
- Date: Tue, 13 Jun 2023 11:53:02 +0000
- To: public-css-archive@w3.org
ydaniv has just created a new issue for https://github.com/w3c/csswg-drafts: == [css-view-transitions-1] Possible perf footgun when styling pseudo-tree based on state == Currently in order to change the style of the generated pseudo-tree based on state of the DOM one has to use a `:has()` selector on the `html` element to capture that state and then chain the pseudo-elements from there to style them. I have discussed this with @una, @lilles, and @andruud at CSS Day and they said that using a `:has()` on an element so high up the DOM tree may be a big perf issue with rendering possibly taking a few seconds in some cases. Here is a codepen with a simple example: https://codepen.io/ydaniv/pen/QWJjgQp Basically it has this: ```html <main> <div id=source></div> <div id=target></div> </main> ``` And styles: ```css /* This is our source of trouble */ html:has(.switch)::view-transition-group(circle) { animation-duration: 1.2s; } #source { view-transition-name: circle; .switch & { display: none; } } #target { display: none; .switch & { display: block; } } ``` And the JS for triggering VT is: ```javascript document.startViewTransition(() => { main.classList.toggle('switch'); }); ``` My concern is that this may become a common pattern and cause big frustration, probably even more so users than to authors. It's possible to work around this by lifting all such state up to the `html` element and try to mitigate this with communicating this to authors. However, I think it's worth trying to find another solution for avoiding it altogetehr. Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/8960 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Tuesday, 13 June 2023 11:53:04 UTC