14:57:11 RRSAgent has joined #css 14:57:15 logging to https://www.w3.org/2024/05/08-css-irc 14:57:15 RRSAgent, make logs Public 14:57:16 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 15:00:12 jarhar has joined #css 15:00:38 kizu has joined #css 15:01:46 davidleininger has joined #css 15:01:53 akeerthi has joined #css 15:02:08 Meeting: OpenUI-WHATWG/HTML-CSSWG meeting 15:02:12 Present+ 15:02:15 present+ 15:02:24 present+ 15:03:23 present+ 15:03:26 lea has joined #css 15:03:32 present+ 15:03:53 masonf has joined #css 15:07:23 present+ 15:08:00 q? 15:13:02 jensimmons has joined #css 15:13:03 present+ 15:13:08 present+ 15:13:08 present+ 15:14:16 present+ 15:14:19 present+ 15:18:31 present+ 15:19:20 present+ 15:21:58 present+ 15:21:58 present+ 15:22:03 Luke has joined #css 15:22:03 scribenick: fantasai 15:22:08 scribenick: hdv 15:22:39 una has joined #css 15:22:45 hdv is OpenUI's version of fantasai, in terms of scribing. :-) 15:22:46 present+ 15:22:50 present+ 15:23:11 present+ 15:23:46 https://lists.w3.org/Archives/Public/www-archive/2024May/att-0000/appearance_base_select.pdf 15:24:13 Topic: presentation on styleable `… `appearance: base-*` would be to turn off all the styling but not as agressively as `none` 15:55:02 q+ 15:55:10 fantasai: to the extent this is about largely styling… to have one appearance base I think I agree with florian would be best to not do that 15:55:30 q+ 15:55:53 fantasai: it would be nice if we could look into how appearance base could work for all form controls, so that we could try and ship it as one thing rather than creating all the individual ones, which would be more complicated to learn for folks 15:56:08 fantasai: that might require a bit more work, but if we can manage to get it to work it would be better to try and do that 15:56:09 Note that this is the same thing we did with reading order, for similar reasons 15:56:11 gtalbot has joined #css 15:56:46 I don't think it's possible, fundamentally, to have "base" work while we haven't designed the behavior on everything else. 15:56:59 *especially* the moment we start doing the input types. 15:57:21 astearns: I realise we didn't start with 'what we want to get out of this', jarhar what would you like out of this for next time? 15:57:30 jarhar: @@@ 15:57:30 I think redesigning all of the form controls is a bit more than "a bit more work". 15:57:33 I really appreciate the history meeting mode – especially since much of this work has been done previously inside one or two companies. I am glad to be able to catch up and hear where the discussion is at now. 15:57:40 +1 masonf 15:57:44 astearns: let's have a summary comment in the issue next time so that folsk can review 15:57:51 I think one of the underlying issues here is that we have CSS discussions that say "X does not belong in CSS" and WHATWG discussions that say "Y does not belong in HTML" and we need to use some of this meeting sorting out that there isn't overlap between X and Y. :-) 15:57:51 s/folsk/folks 15:58:06 Much of the work has been done in the open in OpenUI, not within a few companies. 15:58:48 jensimmons: do feel it was useful to have a history mode meeting this time, and can be more practical next 15:58:53 chrishtr: +1 15:59:07 the @@@ was "i would like to get agreement that we should use css, whatever property or value, to opt in to the new mode instead of html" 15:59:19 s/@@@/i would like to get agreement that we should use css, whatever property or value, to opt in to the new mode instead of html 15:59:20 +1 15:59:43 PaulG has joined #css 15:59:47 khush has joined #css 15:59:50 schenney has joined #css 15:59:57 astearns: we're out of time, but will start scheduling these regularly 16:00:38 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 16:00:41 kbabbitt has joined #css 16:00:49 present+ 16:00:54 present+ 16:01:18 bts_ has joined #css 16:01:26 bts has joined #css 16:01:58 PaulG has joined #css 16:02:09 present+ 16:02:11 present+ 16:02:14 ethanjv has joined #css 16:02:32 present+ 16:02:48 present+ 16:03:02 present+ 16:03:07 scribenick: fantasai 16:03:14 alisonmaher has joined #css 16:03:17 bradk has joined #css 16:03:22 present+ 16:03:27 present+ 16:03:34 jfkthame has joined #css 16:03:49 present+ 16:03:51 astearns has changed the topic to: agenda: https://lists.w3.org/Archives/Public/www-style/2024May/0005.html 16:03:54 present+ 16:03:57 present+ 16:03:59 Present+ 16:04:00 present+ 16:04:00 present+ 16:04:03 present+ 16:04:04 present+ 16:04:05 Agenda: https://lists.w3.org/Archives/Public/www-style/2024May/0005.html 16:04:08 present+ 16:04:20 Topic: View Transitions 16:04:26 Subtopic: [css-view-transitions-1] Should view transition names be tree scoped? 16:04:32 present+ 16:04:37 present+ 16:05:18 khush: Spec currently traverses all DOM elements, including those in shadow DOM 16:05:26 khush: Suggestion is to limit to tree-scoped 16:05:38 +1 to this 16:05:53 khush: so this would exclude things in shadow DOM 16:06:11 astearns: I've written some tests for tree-scoping, btw, and interop is terrible 16:06:46 khush: Are you talking about other features that are similar? 16:07:06 astearns: Yeah, I did @property rules and @xxx rules, which are supposed to be tree-scoped, and they're not handled correctly 16:07:20 zakim, open queue 16:07:20 ok, astearns, the speaker queue is open 16:07:21 astearns: so probably some other things are also broken 16:07:56 matthieud has joined #css 16:07:56 fantasai: two things, khush does this mean that for v-t that you'll never be doing transitions on anything in the shadow dom? 16:08:15 khush: yeah this means that you couldn't use something inside the shadow dom as an independent thing 16:08:19 q+ 16:08:34 ... scoped transitions would allow you to do that 16:08:51 bkardell_ has joined #css 16:08:51 ... but only as a unit inside the DOM 16:09:04 present+ 16:09:07 fantasai: to alan, there's two different kinds of scoping, at-rules and name defining 16:09:20 ... those are quite different mechanism 16:09:32 ack kizu 16:09:34 s/defining/defining on elements/ 16:09:35 ... I'd expect less issues with things like timeline scopes and so on 16:09:50 kizu: Wrt other scoping things, we also have timeline-scope and anchor-name 16:10:13 kizu: Might want to have a way to expose these names, since might have cases where you want to expose 16:10:14 pdr has joined #css 16:10:29 q+ 16:10:36 kizu: maybe this is a more general issue that we need to handle in CSS, and have it work consistently 16:10:37 ack khush 16:10:47 +1, we need a general mechanic for weakening shadow encapsulation 16:10:56 But we should be consistent for now 16:10:58 khush: kizu's point reminds me of ::part(), could use CSS to expose names from within shadow DOM outside it 16:11:01 kbabbitt has joined #css 16:11:12 khush: maybe if you expose the element could allow it to match 16:11:21 khush: could make it more complicated to implement 16:11:37 khush: we already have things in the platform that allow such information, in those cases do you want naming in CSS to also be exposed? 16:11:51 astearns: That would be a separate feature, though. This is for default behavior for view transitions 16:12:08 khush: Does it make sense to make this resolution cover other cases also? Have a general principle 16:12:22 astearns: I think a separate issue on general mechanism, because we do want to consider them all 16:12:31 astearns: don't want to have a specific escape route just for VT 16:12:54 Agree, separate issues 16:13:26 RESOLVED: view-transition-name lookup is tree-scoped 16:13:42 bradk has joined #css 16:13:42 Subtopic: [css-view-transitions-1] Handle startVT for offscreen iframes 16:14:03 Khush, ping me with any difficulties or for review 16:14:46 khush: optimization that if an iframe is off-screen, we don't run lifecycle updates or slow them down 16:14:59 khush: So as an optimization, offscreen doesn't get animated 16:15:08 khush: During view transitions, looking for that refresh 16:15:15 khush: but for iframe won't refresh until iframe comes on screen 16:15:26 khush: given it's already off-screen, user isn't going to see any animation 16:15:36 khush: so suggestion that if it's offscreen, treat it as invisible 16:15:45 khush: or if iframe is detached from tree 16:15:51 khush: current spec is to skip the transition 16:16:00 khush: just update the DOM directly, since user won't see the animation anyway 16:16:14 khush: Question here is, what if iframe is not detached, but is far enough off-screen that it's not being animated by the browser 16:16:18 q+ 16:16:33 khush: currently what happens is transition once you bring it on screen 16:16:38 khush: other option is to skip the transition 16:16:50 khush: third option is to force the update and do the transition 16:17:12 ack emilio 16:17:15 khush: once the browser has set up the animation, just like other animations the UA won't need ot run the animation, just update the timeline, as long as it's offscreen 16:17:25 emilio: I'm not a fan of forced-rendering, because it allows [missed] 16:17:34 emilio: you can call requestAnimationFrame and then startViewTransition 16:17:58 emilio: I tend to think current behavior is more consistent with regular animation frame would work 16:18:02 q+ 16:18:04 emilio: so I think current behavior is fine 16:18:15 emilio: skipping transition allows you to detect this more directly, I don't think it's great 16:18:26 emilio: we rely on the page not knowing whether it's throttled 16:18:43 khush: because iframe is not ??, can't they already detect offscreen? 16:18:55 emilio: well yeah, but you don't know if it's because of slow machine or because offscreen 16:18:56 s/??/getting rAF callbacks/ 16:19:12 emilio: can act somewhat differently, but iframe isn't allowed to unthrottle itself, which is what forced rendering would do 16:19:15 ack vmpstr 16:19:53 ??: We'll timeout by the time the animation is on screen, so if call startViewTransition callback won't run until at least one rAF callback, and by that time we are likely to skip the transition 16:20:02 s/??/vmpstr/ 16:20:03 khush: timeout starts after we cache the old state. Just happens to ??? 16:20:08 vmpstr: doesn't seem great 16:20:17 emilio: Should we change that so that the timeout starts when you actually call the API? 16:20:27 khush: don't see any reason not to 16:20:29 q+ 16:20:31 astearns: other questions/comments? 16:21:01 emilio: Given we unthrottle not exactly when you're in the viewport bounds, but in some range, likely that by the time you scroll to the iframe transition has finished anyway 16:21:17 stephenfromgoogle: Is throttling behavior thought to be interoperable at this time? Vague in the spec. 16:21:35 stephenfromgoogle: would we introduce an interop issue if we don't force rendering? 16:21:50 +1 16:21:51 flackr: that was one of my concerns about not forcing rendering. it would expose more of those differences in behavior 16:22:04 emilio: that difference is already exposed by rAF tagging 16:22:13 s/tagging/timing/ 16:22:25 emilio: I think it's somewhat reasonably interoperable, at least I assume all browsers to be throttling visibility:hidden and very far off screen 16:22:44 emilio: this is an area that could get improvement, especially now that lazyloading thresholds are a thing 16:22:49 q+ 16:23:12 stephenfromgoogle: I can tell you, our throttling code in Chromium has no margin. If an iframe is even 1px outside viewport, it will be throttled. That's different form lazyloading, which does have a margin. 16:23:22 emilio: worth discussing in an HTML spec issue 16:23:36 emilio: in any case, I still think forced rendering is not a great option 16:23:48 ydaniv has joined #css 16:23:49 emilio: if you call startVT, then you can force engine to unthrottle you all the time, which is not great 16:23:52 ack khush 16:24:01 khush: +1 everything Emilio said 16:24:16 khush: especially for one frame 16:24:29 q+ 16:24:30 khush: with other CSS animations, unless animating we don't need to spend resources on it, but here do 16:24:35 khush: so would prefer current behavior 16:25:06 khush: Yes, different browsers use different margins, and different features have different margins, being exposed doesn't seem like a big constraint 16:25:07 ack flackr 16:25:15 flackr: difference with animations is that you can always produce the thing that would have been drawn 16:25:25 flackr: whereas with VT, once you draw the updated, you have destroyed the old state 16:25:34 flackr: can't recover if it suddently becomes visible 16:25:45 flackr: One use case was starting a view transition on a frame, and then bring it into view 16:25:58 flackr: maybe there's an alternative to consider who's starting the transition 16:26:18 flackr: if starting within hidden frame, ... but if starting from root frame, could unskip frame by moving it into view? 16:26:25 ack vmpstr 16:26:54 vmpstr: whether we keep these frames alive or not is also a function of whether started when iframe on screen and then moved offscreen or started offscreen 16:27:13 vmpstr: Also don't understand concern wrt frame throttling. You could set timeouts and force rendering in a script 16:27:21 vmpstr: why would they use VT to unthrottle? 16:27:33 flackr: Browsers can force minimum timeouts on setTimeout 16:27:40 vmpstr: it would force it to run rAF? 16:27:44 vmpstr: iframe would do more work? 16:27:56 flackr: yes, it would force it right away, but setTimeout would wait a second 16:28:00 vmpstr: what's the attack vector here? 16:28:19 emilio: I'm not sure whether there's a good way... I've seen frames consuming too much CPU unintentionally 16:28:34 emilio: I can't think of a recent case where they do it intentionally 16:28:59 dholbert: maybe an ad wants to start playing immediately rather than skipping a few frames, so continuously burns CPU in the background so it's ready 16:29:07 dholbert has joined #css 16:29:11 khush: use case I'm concerned is, it's hard for an iframe to do the right thing without a lot of code 16:29:15 present+ 16:29:30 khush: whereas with other animations, just browser doesn't spend resources. This is the first case where we would force rendering 16:29:34 jensimmons has joined #css 16:29:48 vmpstr: more wondering about second case 16:29:55 vmpstr: we could enforce setTimeout limits 16:30:08 vmpstr: concerned that you call your startViewTransition for some effect, and that will only start running when you're on screen 16:30:08 q+ 16:30:21 vmpstr: so I would force rendering or skip trnasition, but not doing thing until on screen 16:30:24 ack emilio 16:30:33 emilio: alternatively set timeout mechanism to start when you call API? 16:31:00 vmpstr: [missed] 16:31:00 q+ 16:31:04 vmpstr: much better than current behavior 16:31:10 ack flackr 16:31:29 flackr: one possibility, when we start the animation we could start it with a negative start delay, so that it would be timed as if it had started on time 16:31:37 s/[missed]/it's timing dependent -- whether you've scrolled the frame into view within the timeout or not/ 16:31:39 flackr: this would basically defer the work until the animation became visible 16:31:46 khush: you'd have to render to cache? 16:32:03 flackr: when it becomes visible. If it doesn't become visible until end of duration, then you can skip it 16:32:22 khush: complexity of all the animation after caching old DOM, you still have to do at least one render to cache it 16:32:31 flackr: or you defer the dom change 16:32:49 khush: which pseudo-elements get rendered depends on the new DOM 16:32:54 khush: we don't know until we run the callback 16:32:59 flackr: you defer until it becomes visible 16:33:21 flackr: when it becomes visible, you do pre-snapshot, you do the update, you determine animations, and you determine that the animations are finished, so immediately jump to end state 16:33:26 khush: sounds like skip 16:33:30 flackr: except it fires all the events 16:33:34 flackr: and [missed] 16:33:41 flackr: it's only "skipped" ... 16:33:50 khush: what's the goal? we don't want the author to know we skipped it? 16:34:00 flackr: there's no difference between whether your frame was on screen or offscreen 16:34:09 flackr: if it comes on-screen during animation, you'll see the animation 16:34:45 flackr: I haven't fully thought this out, but thinking that if you know when the request to start the animation occurred, that's the start of your timeline 16:35:00 khush: like current behavior, except animations will finish faster 16:35:07 emilio: might also be consistent with how time-based CSS animations work 16:35:27 emilio: if you have an iframe, and then scroll down, by the time you scroll up again the browser has done no rendering updates, but animation jumps to the correct point 16:35:35 emilio: that's worth consideration 16:35:52 vmpstr: capture right now can take some amount of time, and so that time would then be immediatley skipped into the animation, which won't be a smooth experience 16:36:09 vmpstr: essentially the animation start waits until the capture is available; with this change it would be a frame or two of delay 16:36:11 q+ 16:36:22 vmpstr: so those first 2 frames would be immediately skipped into the third frame of the animation, which is not ideal 16:36:31 flackr: that's a fair concern, possible ways to mitigate that 16:36:39 flackr: you take the time until the frame started as your negative start delay 16:36:55 vmpstr: worth considering this model, but need to be careful about the math 16:37:03 ack khush 16:37:20 khush: my issue is this approach is complicated. What benefit do we derive from it? 16:37:34 khush: ... 16:37:45 khush: what's the benefit of bringing iframe on screen with the old DOM? 16:38:00 q+ 16:38:02 vmpstr: it supports cases of, suppose your animation is 30s and starts offscreen, and then you scroll it into view partway through 16:38:11 gtalbot has joined #css 16:38:14 vmpstr: it looks like everything was working all along 16:38:23 khush: you eventually want user to see the new state 16:38:45 khush: point of doing animation is to go from old state to new state nicely 16:39:06 astearns: maybe we should look at the new option and bring it back 16:39:07 ack emilio 16:39:23 emilio: perhaps more realistic use case for this model is, consider a lazyloaded iframe 16:39:31 emilio: page being loaded has a view transition while loading 16:39:42 emilio: right now, given stephen's comment about no margin 16:40:06 emilio: lazyloading kicks in first, page is invisible, then you call startViewTransition. If you skip it, then you discard everything the author wanted even though user is about to scroll the iframe 16:40:09 +1 16:40:25 emilio: That model doesn't seme too complicated, just need to handle the first two frame jump 16:40:32 emilio: It behaves more consistently with our APIs also 16:40:41 emilio: rAF we just delay your callback, this seems similar 16:40:54 emilio: I think there are more use cases that justify this kind of model 16:41:02 ack fantasai 16:41:25 fantasai: basically agree with astearns and emilio 16:41:35 fantasai: let's explore flackr's model, and come back 16:41:48 vmpstr: ok, let's look into the issue and comment with our findings 16:42:06 Subtopic: [css-view-transitions-2] [css-pseudo-4] Clarify ordering of `::view-transition` with other tree-abiding pseudo-elements 16:42:34 khush: spec says ::view-transiiton element originates from the document element 16:42:43 khush: but doesn't say what the ordering of the pseudo-element is wrt other pseudo-elements 16:43:12 khush: proposal is, since conceptually it's lifted into containing block, it's meant to be last thing that paints over entire DOM 16:43:19 khush: so having it be after ::after makes sense to me 16:43:51 fantasai: Agree. Should be after everything, including ::after 16:44:04 emilio: is this observable? 16:44:27 khush: I think maybe hit-testing. If the author removes ? from root element, whether you hit ::after or view-transition? 16:44:37 emilio: that's a painting order problem 16:45:12 emilio: It's worth putting in the spec, but might not be observable right now 16:45:18 khush: which is a good time to do it :) 16:45:44 fantasai: if we all agree, let's just resolve and put it in the spec :) 16:46:03 emilio: maybe `document.documentElement.getAnimations({ subtree: true })`, if that returns pseudo-element animations? 16:46:10 RESOLVED: ::view-transition pseudo is the last child of its originating element, after everything else including other pseudo-elements 16:46:43 Topic: Transitions 16:46:48 Subtopic: [css-transitions] Transition to height (or width) "auto" 16:46:49 > if that returns pseudo-element animations? 16:46:49 flackr can confirm. I think it's supposed to. 16:47:01 -> https://github.com/w3c/csswg-drafts/issues/626#issuecomment-2071016522 16:47:27 dbaron: We discussed calc-size() proposal. One question was whether we could, instead of or in addition to calc-size(), write what people want to write 16:47:31 dbaron: concern was compat, but did we check 16:47:49 dbaron: one thing I followed up with, since I had implemented, I could implement the natural behavior where you could just transition '0x' to 'auto' 16:47:53 dbaron: I could figure out what could break 16:48:09 dbaron: There's more details in the comment in the issue, but basically what I did was a very conservative study 16:48:25 dbaron: ran through loading top 1000 sites with a special build 16:48:39 dbaron: Even with that limit, I found multiple pages that would break with this change 16:48:54 dbaron: [gives some examples] 16:49:16 dbaron: Several pages animating widths and heights from zero that was not expected 16:49:36 dbaron: at the same time, there was a page on ups.com with an animation that got better 16:49:49 dbaron: but conclusion was, given this very small and conservative sample shows multiple pages that are broken 16:49:52 q+ 16:49:53 dbaron: we know it's not web-compatible 16:50:06 dbaron: so we know we can't just support CSS tranistion from 0px to auto and equivalents 16:50:21 dbaron: given that, what I want to get out of this is to restate more firmly that we want to move forward with calc-size() 16:50:35 dbaron: given alternative, which would have better developer ergonomics, is not compatible 16:50:37 ack flackr 16:50:45 flackr: agree we can't just do it automatically 16:50:57 flackr: what about having a more generic opt-in for authors? 16:51:08 flackr: calc-size() require for each item to change the styling 16:51:19 flackr: whereas a switch could opt in your whole page 16:51:26 dbaron: we could consider something like that 16:51:36 dbaron: maybe use transition-behavior, which is designed to do that 16:51:46 dbaron: it's reset by the transition shorthand 16:51:58 flackr: it's also about transitions only, not animation 16:52:05 dbaron: I think we can do both 16:52:17 dbaron: current behavior with calc-size(), to get the animation you have to wrap at least one endpoint in calc-size() 16:52:39 dbaron: I also do worry about global overrides 16:52:50 dbaron: because pages are built from smaller components 16:52:56 ack fantasai 16:53:46 fantasai: Agree with flackr 16:54:01 I'm completely fine with a value that can turn on the transition behavior for general values, fwiw, so long as the default behavior requires using calc-size() on at least one side. 16:54:15 fantasai: I think putting in transition-behavior is good, not global, easy to incorporate into transitions and gets reset whenever you do a different ransition 16:54:45 fantasai: for animations, could consider something in the @keyframes rule, so that it gets associated with the keyframes and used wherever the keyframes get used 16:54:57 astearns: but agree that doesn't preclude using calc-size() 16:55:00 fantasai: yes 16:55:30 TabAtkins: Proposed resolution, by default, only get transition if at least one side gets calc-size() 16:55:59 gtalbot has joined #css 16:56:01 RESOLVED: Animation to/from keyword sizes requires an opt-in, so by default only get transition ifa t least one side gets calc-size() 16:56:12 s/ifa t/if at/ 16:56:39 dbaron: At this point it's prototyped in Chromium, but it's getting more stable and closer to matching spec at this point 16:57:38 Topic: End 16:59:03 zakim, end meeting 16:59:03 As of this point the attendees have been dbaron, flackr, davidleininger, hdv, gregwhitworth, kizu, chrishtr, keithamus, jensimmons, akeerthi, fantasai, masonf, lea, smaug, 16:59:06 ... dandclark, una, TabAtkins, jarhar, JonDavis, ydaniv, kbabbitt, JaseW, bts, bramus, khush, schenney, alisonmaher, vmpstr, jfkthame, florian, emilio, bradk, rachelandrew, 16:59:06 ... bkardell_, dholbert 16:59:06 RRSAgent, please draft minutes v2 16:59:07 I have made the request to generate https://www.w3.org/2024/05/08-css-minutes.html Zakim 16:59:13 I am happy to have been of service, astearns; please remember to excuse RRSAgent. Goodbye 16:59:13 Zakim has left #css 17:41:37 bradk has joined #css 17:53:20 bradk has joined #css 18:37:36 Linux_Kerio has joined #css