14:02:19 RRSAgent has joined #css 14:02:19 logging to https://www.w3.org/2021/07/27-css-irc 14:02:21 RRSAgent, make logs Public 14:02:22 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 14:02:41 present+ 14:02:46 alisonmaher has joined #css 14:03:02 present+ 14:03:03 present+ 14:03:23 lea has joined #css 14:04:19 ScribeNick: TabAtkins 14:04:32 oriol has joined #css 14:04:41 present+ 14:04:41 present+ 14:04:46 present+ 14:05:01 present+ 14:05:09 present+ 14:05:16 present+ 14:05:18 dholbert has joined #css 14:05:20 present+ 14:05:22 present+ 14:05:24 Topic: Shared Element Transitions 14:05:26 present+ 14:05:27 present+ 14:05:43 github: https://github.com/w3c/csswg-drafts/issues/6464 14:07:03 jbroman has joined #css 14:07:54 present+ 14:07:59 una has joined #css 14:07:59 jensimmons has joined #css 14:08:09 JakeA has joined #css 14:08:10 present+ 14:08:17 present+ 14:08:26 present+ 14:08:46 JakeA: [slides] 14:08:57 JakeA: I'm helping out with this Shared Element Transitions work, along with Jeremy and Khushal 14:09:08 JakeA: Current state: when you navigate on the web, the page just changes 14:09:22 JakeA: but on apps, especially in mobile, you get these lovely transitions betweens tates 14:09:31 [slide shows various transitions, like sliding in a sidebar, swiping across panels, etc] 14:09:47 JakeA: they look nice in person, and can even be directly useful, to help communicate transitions between states so there's less context loss 14:10:04 JakeA: I asked people on twitter about this, especially if they'd like it in a SPA or MPA (multi-page app) 14:10:12 JakeA: most people were interested in it for a multi-page app! 14:10:23 [slide shows Twitter survey of SPA vs MPA, 31% to 52.9%] 14:10:25 JakeA: I see why - you can already kinda do it in a SPA, but it's impossible in an MPA 14:10:41 JakeA: Strong feeling that manys ites *become* SPAs just to get these transitions; not sure, but it feels like it. 14:10:53 s/manys ites/many sites/ 14:10:53 JakeA: And that's a problem, SPAs have a lot of issues, and they're often done badly. 14:11:08 JakeA: But even when done by experts, you lose things like HTTP streaming, gain a big JS bundle, etc. 14:11:20 JakeA: So thinking about this space 14:11:21 [slide shows timeline] 14:11:27 [2015: Chrome proposal and experiment] 14:11:35 JakeA: 2015 was an early chrome proposal, didn't go very far, and the people left for other projects 14:11:36 [2015: Chris Lord (Mozilla)'s sketch] 14:11:41 [2017: Jake's sketch] 14:11:53 [2018: Tab's sketch] 14:11:58 JakeA: 2017, I sketched an API. Each time we learned more things that might work. 14:12:00 flackr has joined #css 14:12:01 [2021: This round!] 14:12:06 eugene has joined #css 14:12:07 JakeA: 2018, Tab had his own proposal 14:12:15 JakeA: And now we're here today 14:12:27 JakeA: Not the first people to even try this out, back in '97 IE had something. 14:12:35 [1997: IE4 with navigation transitions via meta http-equiv="page-enter"] 14:12:42 JakeA: 24 years ago, you could use to do page transitions 14:13:10 JakeA: there were 22 transitions to choose from; several dupes from different directions, like "wipe left" and "wipe up" 14:13:20 [ ] 14:13:21 JakeA: also a special 23rd transition that made a random choice 14:13:37 JakeA: slightly kidding, but I think a predefined set of transitions can get us pretty far 14:13:49 JakeA: But not all the way, I got feedback from people asking for custom control 14:13:57 JakeA: If we look at some of the nicest transitions in the android docs 14:14:11 JakeA: It's animating between states in multiple ways; some things are shared between the states 14:14:18 [shows Android Contacts list, clicking on name of person shifts the name up and colors/layout changes to show a profile] 14:14:20 JakeA: This person's name in the address list moves to be the header for their profile 14:14:40 vollick has joined #css 14:14:41 [Jake's homepage with 2-line title vs 3-line title] 14:14:55 JakeA: on my blog, when you're on the index page and click thru to an individual post, the headers are basically the same. why coudln't that transition? 14:15:11 JakeA: Every element on the two pages are different, even different tag names. 14:15:14 chris has joined #css 14:15:30 JakeA: Some elements change content, some elements (dates) don't change content but do change position. 14:15:46 JakeA: Header changes layout, it does a fade to the new larger text 14:15:54 JakeA: and header container scales its height 14:16:09 JakeA: then the rest of the page just fades content 14:16:28 JakeA: There was a bunch of moving parts here, but overall, it was simple because it was done with just textures, no live layout between the two 14:16:32 present+ 14:16:36 JakeA: So didn't need to keep the old page alive 14:16:48 present+ 14:16:50 JakeA: there are some concepts we keep coming back to 14:16:52 https://github.com/WICG/shared-element-transitions 14:16:57 [slide: Change] 14:16:57 JakeA: First, there's a change 14:17:05 JakeA: Before that, we need a prepare step 14:17:08 [slide: Prepare, Change] 14:17:15 JakeA: where the outgoing page offers up parts of itself to be involved in the transition 14:17:26 JakeA: Like my blog example, offering the header, the date, the sidebar 14:17:44 [slide: Prepare, Change, Transition] 14:17:44 JakeA: Then the change happens, letting the outgoing page be cleared from memory except for the textures it's offering up 14:17:55 JakeA: Then the Transition happens, where the new page animates in 14:18:20 JakeA: LIke, if you have a series of chat messages, the old page might have three messages, the new has four; the three can just fade in, but the fourth has to do something special; this is where that can happen 14:18:29 JakeA: Like I said, these are textures; we don't want to do layout on the old page 14:18:39 JakeA: But we also don't want the new page to get pixel readback from the old textures 14:18:55 JakeA: New page is trusting waht the old page gave it - it says "this is a heading!" and the new page trusts that it's a heading 14:19:06 JakeA: for cross-origin transitions that's a potential concern 14:19:10 [slide: cross-origin transitions] 14:19:22 JakeA: The old page could offer up bad stuff 14:19:42 JakeA: A bad page could transition into a news page, offering up its "header" and boom, it's the q-anon logo 14:19:57 JakeA: So cross-origin transitions either need to be heavily restricted 14:20:06 JakeA: Or need a two-way handshake to agree on which textures to share 14:20:11 [slide: single-page app transitions] 14:20:17 JakeA: There's also single-page app transitions 14:20:24 JakeA: Not as manya uthors are interested 14:20:29 khushal has joined #css 14:20:30 JakeA: because they're actually quite hard to do today 14:20:37 s/manya uthors/many authors/ 14:20:52 JakeA: You need DOM for both states at once, which means you need to protect the old stuff from being interacted with, or being seen by a11y tools 14:21:03 present+ 14:21:07 JakeA: Need to control for scroll position, how it can mess up CSS mid-transition, etc. 14:21:16 JakeA: Twitter says they don't do transitions precisely for these reasons 14:21:33 JakeA: So we were thinking about this and realized this should work on the page transitions model just as well 14:21:46 [slide: prepare, change, transition] 14:21:51 JakeA: You're still doing a prepare phase to record bits of the old state, then you transition into the new state 14:22:00 JakeA: We already ahve a sketch of the SPA model behind a flag in Canary 14:22:07 JakeA: Here's an example of the Preact website 14:22:08 [slide: preact website SPA] 14:22:29 JakeA: Author of the site says it's "a mess", but it has a router for the overall site transition as many SPAs do 14:22:47 JakeA: But even tho I didn't understand much, I could easily poke in and add the transitions API, and it all just works 14:22:57 JakeA: BAck button reverses transitions, it's all just very little code 14:22:59 [slide: preact website with subsections fading in and out in the content panel] 14:23:14 JakeA: In spirit, our current design is very similar to the old IE version, with a list of predefined transitions 14:23:27 JakeA: New bit is this "shared elements" notion, like the heading and sidebar in the guide. 14:23:41 JakeA: In this example I'm using this to keep them in position and only change the content by sliding it in 14:23:56 q? 14:23:59 q+ 14:24:04 [slide: Interesting Problems] 14:24:10 JakeA: While we need the bare-bones for EWM reasons, I think there's definitely a high-level version that solves 80% of cases 14:24:13 JakeA: Some problems. 14:24:17 [slide: cross-fading] 14:24:21 JakeA: First is cross-fading. Transitions have a lot. 14:24:25 JakeA: Hard to do in CSS rightnow 14:24:35 JakeA: Especially between elements with transparency. 14:24:47 JakeA: Can use explicit opacity on the two states 14:24:47 [slide with .thing1 { opacity: 1 } .thing2 { opacity: 0; } ] 14:25:02 JakeA: here's a slide where the two are identical save for a few extra words on the second 14:25:18 [slide: cross-fade shows image, which doesn't change, fades to 50% hafway in the transition] 14:25:19 JakeA: Midway thru the transition the shared pixels fade a bit, ideally we could fix this 14:25:27 JakeA: CSS has a cross-fade(), which does the right thing 14:25:28 This is because the cross-fade eeds to be done in linear-light 14:25:39 (That's not the only reason) 14:25:41 s/eeds/needs/ 14:25:42 so that -0.5 + 0.5 = 1.0 :) 14:25:51 cross-fade() also blends sizes tho 14:25:52 s/-0.5/0.5 14:26:00 JakeA: Which isn't always what we want 14:26:02 [slide: background-image: cross-fade(...); ] 14:26:20 [slide: Not quite elements, not quite images] 14:26:27 JakeA: We're not dealing with elements *as such*; images might b eokay since we've just got textures left over 14:26:27 (interested to know the other reasons) 14:26:42 s/b eokay/be okay/ 14:27:08 JakeA: but not all an image - Some information like transforms we might want to carry over so it can animate properly 14:27:09 [slide: timings and deadlines] 14:27:16 JakeA: Another thing to think about is timings and deadlines 14:27:32 JakeA: Right now when you click to a new page, the browser shows the new page when it wants, when the data comes in 14:27:39 [slide: iWouldLIkeToDoAPageTransition(); ] 14:27:47 JakeA: But if the incoming page wants to control the transition, it should be able to signal for it 14:27:51 JakeA: But how long can we wait? 14:28:08 [slide: iWouldLikeToDoAPageTransition(); await massiveImageLoad; nowDoTHePageTransition(); ] 14:28:11 JakeA: How long do we wait for the "i want to handle this" signal, and how long do we wait for it to actually do the transition after it signals? 14:28:17 JakeA: We like progressive rendering 14:28:29 JakeA: Do we want to allow pages to delay until a 5MB image loads? 14:28:39 JakeA: They can do it today, kinda 14:28:47 [slide: Thoughts? Questions?] 14:28:51 JakeA: But maybe if they, say, don't do it in 5s we just do a page swap 14:28:58 JakeA: So, questions? 14:29:17 Jake Archibald 17:28 https://github.com/WICG/shared-element-transitions - repo (API design in flux) https://preact-with-nav-transitions.netlify.app/ - preact site demo 14:29:38 https://www.irccloud.com/pastebin/at0XnzDj/ 14:29:45 present+ 14:29:50 https://github.com/WICG/shared-element-transitions - repo (API design in flux) 14:29:50 https://preact-with-nav-transitions.netlify.app/ - preact site demo 14:29:57 ack florian 14:30:09 florian: Intriguing! Overall makes sense at a high level. 14:30:28 florian: Curious how much ends up being declarative vs JS, how they intertwine, I'm sure y'all are thinking of this 14:30:45 florian: There was also something between IE4 and modern stuff. I believe Opera experiemented around 2010 14:31:13 florian: They were a little like the declarative transitions, but also a concept of arranging things in space, so you could say "this page is left of that one" and it would automatically swipe over to it 14:31:20 florian: tied into gestures as well 14:31:39 florian: Wondering if there has been any thought on these lines, including tied in with the "shared elements" part 14:31:55 q? 14:31:59 q+ 14:32:08 florian: This notion of arranging bits of space, I thought it was interesting 14:32:14 florian: Doesn't seem obvious that it doesn't fit 14:32:24 JakeA: Hard to talk about binary declarative vs imperative 14:32:37 JakeA: For some peopel it just means "JS" vs "CSS", but Web Anim - which is it? 14:32:55 JakeA: We almost certainly will end up with something declarative to some extent 14:33:03 GameMaker has joined #css 14:33:08 present+ 14:33:16 JakeA: Lot of desire to do this animation out of the control of either page; the pages just dictate how they want it to go, but it's actually handled outside 14:33:40 JakeA: I did put a sketch together purely in CSS, and I think I got to 15+ properties and hadn't thought about the destination url negotiating yet... 14:33:53 JakeA: I anticipate the destination being done in JS at least 14:34:04 JakeA: And maybe there's a smaller subset that can be done in pure CSS with simple behaviors 14:34:29 present+ 14:34:36 JakeA: Before I had the ability to associate elements with some ID, and if the destination page uses the same ID they're autoamtically tied together 14:34:44 JakeA: In the JS API I presume it'll be similar. 14:35:01 JakeA: There needs to be a way to give more information - like, by default it maybe just translates, cross-fades, and scales 14:35:12 JakeA: But scaling isn't always what you want, as I showed in some examples 14:35:57 chris: if you've got two things transitioning opacity... 14:36:17 chris: You need something where .5 + .5 = 1. That needs linear light; images aren't linear painted, which is why there's lightening. 14:36:26 scribe+ 14:36:30 TabAtkins: linear-light was one problem 14:36:50 agreed 14:36:53 TabAtkins: Other problem is that halfway through, two 50% things laid on top of each other means together they are only 75% opaque 14:37:04 flackr: Gaming has opacity saturation buffers to solve this 14:37:13 khushal: Yeah we foudn that, there's a blend mode that can do that 14:37:26 khushal: I found a webkit bug asking to expose this to mix-blend-mode 14:37:31 ack emilio 14:37:47 emilio: so the idea is that the destination page can observe stuff about the transition, like position of old elements 14:37:50 https://bugs.webkit.org/show_bug.cgi?id=142416 is a bug which talked about the blend mode that would work for this. 14:38:05 emilio: That seems like in conflict with the UA being able to control the transition 14:38:09 q+ 14:38:16 q+ 14:38:21 JakeA: we hope within the API to catch spots where, like, if an error is thrown it doesn't deadlock the transition 14:38:42 JakeA: With this model you can definitely delay the intro of your own page. Having the incoming page control it means you're only harming your own perf 14:38:58 JakeA: Question of how much we want to prevent people - they can already delay their own page arbitrarily. 14:39:13 JakeA: Worry about damaging legit use-cases to guard against some peopel getting it wrong 14:39:14 q+ later 14:39:18 q- 14:39:26 emilio: Main thing I'm concerned about is an animation working on a good computer, but breaking on a crappy phone 14:39:44 JakeA: Right, so think if the transition isn't ready within 3s we just bail, or something like that 14:39:56 JakeA: Like doing font-rendering intervention 14:40:26 emilio: I took a look at the API, which is promise based; if you bail on the transition it rejects the promise, right? If the promise rejects unexpectedly the page might still break. 14:40:50 emilio: This would be much simpler if the UA could decide what to render without the destination page being involved, but I understand it breaks some of the fanciness. 14:41:03 JakeA: I see you're looking at the GH page for the API; that's still in flux 14:41:13 JakeA: We're def looking at ways to mitigate these problems 14:41:29 JakeA: Issue on GH right now looking at moving to a JS API similar to WebLocks 14:42:08 JakeA: In that you provide a callback to run later that returns a promise. Errors become rejected promises instead of breaking script, so you somewhat avoid deadlock. 14:42:14 ack khushal 14:42:38 khushal: design thing i'm thinking about, which page controls the transition. reasons for that to be diff between same-origin vs cross-origin 14:42:53 khushal: Incoming page controlling the transition is good bc it has info from both sides, and can make better decisions 14:43:18 khushal: But for cross-origin cases, we can't let the incoming page know about the outgoing page, so the outgoing page has to control the transition completely 14:43:28 khushal: This requires different API shapes, and it's causing some API divergence 14:43:40 JakeA: This is something I ran into for the CSS-only version 14:44:00 JakeA: If you've got a shared item in the outgoing page which doesn't have an incoming equivalent, or vice versa, it becomes hard to deal with 14:44:08 JakeA: It's hard in CSS to talk about an element that isn't there 14:44:30 q+ 14:44:38 JakeA: Whereas in a JS callback you can get handed five elements, and four match int he new page, and you can figure out what to do with the leftover 14:44:47 q+ 14:44:53 astearns: You mentioned pixel access - I assume incoming page has no pixel access at all 14:44:55 JakeA: correct 14:44:58 q+ 14:45:10 q? 14:45:18 JakeA: Probably model will be outgoing picks up an element for sharing, and a StructuredClonable of info about it, like "I'm a heading" or whatever 14:45:29 JakeA: But no pixel access 14:45:40 JakeA: Hope we can one day get to a state where we can read the pixels on a page 14:45:49 q+ 14:45:57 JakeA: We have origin isolation right now, maybe some even stricter version could some day allow this 14:46:53 astearns: And with outgoing pages opting into data sending, for cross-origin the incoming page might need to be restricted from knowing which of its transitions actually matched. No info about which headings matched, etc, just always run them 14:47:06 JakeA: two angles there - don't want Page A to find info about Page B they didn't want to share 14:47:12 ack astearns 14:47:16 JakeA: In some cases the number of chat messages can leak that 14:47:28 JakeA: But there's also Page A and B *wanting* to share info, but for privacy we don't want to allow them 14:47:33 JakeA: Not sure where the line is right now 14:47:44 zakim, close queue 14:47:44 ok, astearns, the speaker queue is closed 14:47:45 JakeA: Might be that cross-origin is just the IE model - a list and the whole view moves 14:47:48 smfr has joined #css 14:47:53 q- 14:48:04 astearns: you talked about having a high-level declarative variant with less features 14:48:25 astearns: I hope if we get there, the high-level thing can be hooked by the low-level, so you can intervene when necessary 14:48:27 +1 14:48:51 JakeA: Yeah, I think CSS shorthands model is something like what we want to go for 14:49:07 JakeA: Can set up a "sliding" animation, and it can specify a WebAnim-like set of keyframes 14:49:08 present+ 14:49:27 JakeA: And maybe we just wrap that up in "slide-left" keyword, but with full control to do your own 14:49:35 ack fantasai 14:49:35 fantasai, you wanted to mention incremental rendering 14:49:48 fantasai: One, incremental rendering, if you're on a slow connection you want the partial page to show up early 14:50:00 fantasai: dunno how that's considered right now, just want to make sure it's not forgotten 14:50:19 prefers-reduced-motion would turn all of this off, presumably 14:50:29 fantasai: There was also a discussion about shared element transitions in Burlingame, I think, not sure if there are notes or if it was informal; think Ojan was involved 14:50:41 fantasai: Big point I remember there was that cross-origin ones shoudln't leak info 14:51:00 fantasai: Another idea was sharing a timer between the two, so outgoing and incoming pages could put things on the same timeline 14:51:13 fantasai: Coudln't necessarily coordinate between elements, but could at least ensure timing matched up 14:51:28 JakeA: For incremental loading, def one of the fundamentals I want to keep. 14:51:35 JakeA: Def a tension between that and page transitions 14:51:44 q- 14:51:47 JakeA: Would be nice to have a way to say "don't transition until X element is around" 14:51:57 JakeA: Very hard to do right now, tricky with a Mutation Observer 14:52:11 JakeA: Might be a waitForElement() API to let you delay as little as possible 14:52:38 JakeA: In the blog example I want *some* of the content to be there, but don't need the whole page necessarily. Probably want a way to say I just need the top of the page, not the stuff a MB away 14:52:50 JakeA: Nothing concrete there yet, but it's on our minds 14:52:58 JakeA: I didn't know about the transitions discussion 14:53:01 JakeA: I'll try to find notes 14:53:16 JakeA: In chat Alan asked about prefers-reduced-motion 14:53:22 JakeA: Yeah we'd just ignore the transition in that case 14:53:30 q+ 14:53:42 JakeA: Re: leaking cross-origin, absolutely a concern, need to lock down properly 14:53:55 JakeA: re: timeline sharing, that's similar to my previous 2017 idea 14:54:04 JakeA: That version required both pages to be alive at the same time 14:54:11 JakeA: which is an issue for low-memory devices 14:54:25 JakeA: Thought right now is one side controls the transition; the other side just offers things to be transitioned 14:54:43 khushal: interesting to think about whether incoming page *has* contextual info to control the transition or not 14:55:23 khushal: if you're on a news aggregator, and it wants to have a transition to links, ok. but if the user enters in the omnibox, maybe the incoming page gets control over that instead. or maybe browser-initiated just doesn't get transitions. 14:55:31 khushal: Also, re: same vs cross-origin 14:55:45 khushal: In same-origin when incoming can control, we also let it control when the transition states 14:55:58 khushal: and it gets all the info about the outgoing page, so it can do smart things 14:56:14 present+ 14:56:19 khushal: but in cross-origin, when the incoming page doesn't have any info but might still have useful timing info, that's a difficult question 14:56:28 ack eugene 14:56:44 eugene: Reffing on khushal's comments, if you have cross-fade capabilities, the omnibox can do its own thing controlled by the UA 14:57:01 eugene: we've also got scroll-to-text capability now 14:57:20 eugene: and ideally whe nyou're referring to a shared element, hopefully we have a consistent way to refer to those elements 14:57:37 s/Reffing/Riffing/ 14:57:43 s/whe nyou/when you/ 14:57:49 eugene: another comment, declarative vs imperative. imperative is basically marking up a single transition, I think it falls down when you want multiple things simultaneously 14:58:00 s/imperative is/declarative is/ 14:58:08 eugene: So it's important to ahve the models build on each other 14:58:16 eugene: Big call for extensibility, building more on top of this 14:58:42 eugene: Think the right model is to build on the animations ecosystem, so all the existing animations work, and users get new abilities as animations get better 14:59:00 JakeA: re: scroll to text, I think you can use a css selector to id the element 14:59:12 JakeA: that works okay for sscroll-to-text because the lifetime is relatively short 14:59:22 JakeA: And if the highlighting doesn't work, it's not a huge loss 14:59:29 JakeA: Coudl be worse on transitions 14:59:55 JakeA: concern I have is you're navigating around a site, and mid-article the site redeploys and the class names have changed 15:00:10 JakeA: So model we're using right now isn't tags or selectors, it's literally just a bunch of named element references 15:00:16 Francis_Storr has joined #css 15:00:27 JakeA: {"heading": someDOMEl} 15:00:33 I think scroll-to-text uses a snippets of text rather than CSS class names to avoid this 15:00:46 JakeA: Might need a way to bail on transitions so if two versions of a site are totally incompatible they cna figure it out 15:01:20 eugene: I think if it's a problem for page transitions, it'll be more of a problem for people who save links from their search bar; "scroll to image" is just as bad 15:01:31 It does, yes. 15:01:42 ack flackr 15:01:49 flackr: I assume that BF nav, we want to use the transition that you saw when you came in 15:01:57 flackr: Not sure how it would work with the current API 15:02:14 flackr: But should be some way of memorizing the transition so we can reverse it if we go back 15:02:20 flackr: Is that something we can do? 15:02:30 JakeA: Yes, and the more autoamtic we can do the better; people don't often test that 15:02:39 JakeA: Maybe we only do it if the page is in BFCache 15:02:53 JakeA: gets more complicated if you're reloading the old page as well 15:03:12 JeremyRoman: This is a very big rathole, but interesting 15:03:27 JakeA: I think limiting it to BFCache and only +1/-1 transitions is a good start 15:03:49 astearns: Assuming you'd like more feedback in the WICG repo? 15:03:56 JakeA: Yes, that's the right place for it 15:04:11 astearns: And we can do CSS issues when you come up with a declarative CSS version of this 15:04:17 JakeA: Absolutely. Thanks! 15:04:23 +1; thanks CSSWG for your time 15:04:37 thanks, all! 15:04:38 astearns: I think it'll be great to bring the web platform back up to IE4 standards. 15:04:46
15:08:48 https://github.com/WICG/app-history/ 15:14:05 For the minutes: https://github.com/WICG/app-history/ provides a "navigate" event which provides a central place to hear about navigations, kinda like I was able to use on the preact site (due to its router). This means if you want to hear about navigations, you don't need to listen for all link clicks, all form submissions etc etc 15:14:11 dholbert has joined #css 15:17:26 topic: Pause media playback in iframes hidden by content-visibility:hidden 15:17:33 github: https://github.com/w3c/csswg-drafts/issues/6468 15:17:36 scribenick: fantasai 15:17:51 Thanks again for inviting me! 15:17:55 chrishtr: Web developer raised use case of wanting to automatically pause videos, media 15:18:12 chrishtr: in situation where media happens to be in iframe, page can't really access it, because usually cross-origin 15:18:20 chrishtr: atm can only do that by coordinating with each provider of video 15:18:29 chrishtr: Perhaps platform can make that possible 15:18:35 chrishtr: Suggestion was content-visibility to control that 15:18:50 chrishtr: content-visibility is meant as a perf tool, and this is about reducing unnecessary use of CPU 15:18:56 chrishtr: so ... 15:19:10 chrishtr: so seems that media under content-visibility be automatically paused 15:19:31 chrishtr: final point is, as I understand, for web-compat a lot of sites expect video, esp with audio, when not visibible for other reasons 15:19:41 chrishtr: e.g. off screen or detached from the DOM 15:19:51 chrishtr: But since content-visibility is new, probably not compat worry 15:20:03 TabAtkins: I'm surprised at how many things still allow video to play 15:20:09 TabAtkins: This seems like a good idea 15:20:09 q+ 15:20:10 enick_101 has joined #css 15:20:22 q+ 15:20:30 astearns: I'm not sure I'd look for content-visibility as a way to make cross-origin video stop playing 15:20:37 florian: In that direction not obvious 15:20:48 florian: but in other direction, would you expect a video with content-visibility to play? 15:21:00 flackr: display:none might have similar effect 15:21:03 flackr: might also unload frame... 15:21:10 ack emilio 15:21:11 Rossen_: Display:none is a big hammer 15:21:13 It does unload the frame 15:21:18 emilio: Idea is to also do this for ?? stuff? 15:21:24 emilio: ... 15:21:32 s/??/same-origin/ 15:21:49 emilio: Is there a ? on if you remove element from the DOM, then it doesn't stop playing, then you add content-visibility and then remove from DOM it's paused, that's weird 15:21:54 emilio: Doesn't pausing media change styles? 15:21:59 emilio: causes :pause to apply ... 15:22:06 emilio: maybe not a huge deal if under subtree, but also weird 15:22:18 emilio: overall, I think removing video from DOM should pause 15:22:26 emilio: seems weird that content-visibility is the only thing that does this 15:22:31 chrishtr: Yes, it would be all media 15:22:43 chrishtr: issue says iframes, but would also apply to same-origin video within the document 15:22:56 chrishtr: wrt relative timing, seems similar to detaching video after user presses pause button 15:22:58 q+ 15:23:05 q 15:23:05 chrishtr: same thing, rendered as visibible under content-visibility 15:23:11 chrishtr: thrid point was about how styling changes when it's paused 15:23:32 chrishtr: I think yes, those styles would conceptually apply, just like all boxes within content-visibility subtree 15:23:44 chrishtr: but UA is allowed to not render within that, for perf reasons 15:23:53 emilio: Does content-visibility currently change styles under its sub-tree? 15:24:00 emilio: I guess it pauses animations, which is something 15:24:11 flackr: It pauses animations in a way that is not very developer-visibible 15:24:17 flackr: the timer keeps going 15:24:30 flackr: For this video, could maybe not change state to pause, but would not continue playing 15:24:39 Rossen_: Is that how we have it specced? 15:24:52 Rossen_: content-visibility is currently defined as behaving like 'display: none' on contents 15:25:02 Rossen_: [quotes spec] 15:25:14 Rossen_: display:none does not exhibit the behavior you just described for animations 15:25:25 flackr: That's a misleading statement, interaction should not continue .. 15:25:38 astearns: That note is about accessibility, but it's not clear what that note is hooked to 15:25:48 https://drafts.csswg.org/css-contain/#content-visibility 15:25:52 https://drafts.csswg.org/css-contain-2/#valdef-content-visibility-hidden 15:26:07 emilio: But this isn't what the OP filed the issue about 15:26:25 Rossen_: you get to some part of the video, or would you start from the beginning? 15:26:33 astearns: The idea is it will pause, and then resume after visible 15:26:42 astearns: detaching would restart the video which is not good 15:26:48 chrishtr: Pausing video seems simpler to implement 15:26:48 content-visibility animation pausing was spec'd by https://github.com/w3c/csswg-drafts/commit/82fc7ddb1abf9ce0c3f616cbd91a0f1d2069a215 15:26:56 chrishtr: already way to pause videos in UAs 15:27:06 chrishtr: Wrt styles, can leave styles uncomputed 15:27:12 emilio: Why not for animations? 15:27:21 Rossen_: display:none will stop animations entirely 15:27:37 Rossen_: but wrt animations, it's different than what I'm hearing about video that's described by ?? 15:27:49 Rossen_: in case of animations, supposed to pretend they're running, but not actually run and use up CPU 15:27:55 Rossen_: when you return, get to more advanced stage 15:27:59 Rossen_: video ... 15:28:03 Rossen_: saying 2 are the same is not right 15:28:27 q- 15:28:29 Rossen_: If we want this behavior for video or media 15:28:36 Rossen_: differentiate clearly so people would know what to expect 15:28:57 chrishtr: Leaving video playing but not using CPU to do texture stuff is problem, because still have audio 15:29:06 chrishtr: otherwise UA would have to keep audio stream running, but not the video stream 15:29:17 Rossen_: you can pause, and then take them forward, by the delta 15:29:23 Rossen_: as if the video was playing 15:29:31 q+ 15:29:45 ack fantasai 15:29:48 q+ 15:29:55 fantasai: What Rossen said - if you wanted animations and videos to be consistent, you'd need to advacne the timer on it even when it's not playing 15:30:01 fantasai: I think it would be good to treat them the same 15:30:08 astearns: and if you did that, then you would not set the pause style on the video 15:30:08 astearns: And if you did that, you would *not* set pause on the video 15:30:14 fantasai: right 15:30:26 flackr: because content-visibility:auto hides things as scrolled out of view 15:30:30 flackr: ... 15:30:31 q- 15:30:35 ack emilio 15:30:36 flackr: this is why we had this behavior for animations 15:30:47 emilio: pausing a video not only changes styles, but also triggers JS events 15:30:59 emilio: really a problem when style change triggers a bunch of JS handlers 15:31:10 emilio: ... 15:31:24 q? 15:31:26 chrishtr: for animations, we did decide that although video is conceptually advancing in time, it doesn't fire events 15:31:28 q+ 15:31:32 chrishtr: since that goes against perf goals 15:31:43 chrishtr: could potentially just not fire the events 15:31:51 flackr: concern was audio, could also conceptually mute the audio 15:31:59 astearns: that would meet the perf goal, but I wonder 15:32:04 q? 15:32:11 astearns: I get annoyed when I scroll Twitter just slightly enough, but want to keep hearing it 15:32:26 TabAtkins: I have exactly opposite problem with Youtube videos when I scroll away 15:32:41 chrishtr: Could conceptually allow the video to continue, but mute it, and get all the perf advantages 15:32:47 chrishtr: solve use case of pausing the videos some other way 15:32:53 s/Youtube videos open in a tweet where they *don't* stop playing/ 15:32:53 ack florian 15:32:56 q+ 15:33:07 florian: conceptually playing doesn't mean actually playing, can just move the timer and not do work 15:33:15 florian: but for use cases where authors do want to pause 15:33:20 florian: could send an event 15:33:30 florian: and then video can react to that state 15:33:40 florian: same thing could apply to animations, things applying to canvas, etc. 15:33:45 florian: all things trying to be on the same timer 15:33:58 chrishtr: I think you're referring to an event where you can identify when you are skipped? 15:34:12 chrishtr: Discussed on and off. There are use cases for it, like avoiding work in scripts 15:34:28 chrishtr: A video, for example, inside cross-origin iframe could pause when skipped 15:34:47 chrishtr: Similar use case from gmail, cross-origin iframes, would like to be able to stop themselves when they are noticed they are skipped 15:34:55 chrishtr: don't want to poll server to ask for more when not visible 15:35:02 ack Rossen_ 15:35:21 Rossen_: appears we're drifting off the main task of pausing the video 15:35:29 Rossen_: rather than aligning behavior with scrolling and animations 15:35:54 Rossen_: user request we have as well, people want to pause video when scrolling away 15:36:05 Rossen_: At least the current described behavior for content-visibility:hidden doesn't quite align with that 15:36:22 Rossen_: so behavior that advances animations and advances stuff, are we talking about a different behavior here 15:36:29 Rossen_: a pause-media? could be helpful 15:36:35 Rossen_: allows two behaviors co-exist 15:36:39 Rossen_: or have users control one or the other 15:36:46 Rossen_: also what is the event model going to look like? 15:36:52 Rossen_: are you going to get all the events on the DOM side 15:36:59 Rossen_: if trying to synchronize animations with your video 15:37:01 CSSWG_LogBot has joined #css 15:37:04 Rossen_: one moved ahead and other paused, etc. 15:37:12 Rossen_: 2 different behaviors, let's discuss them separately 15:37:20 Rossen_: define what pausing looks like and then figure out how they can co-existy 15:37:33 chrishtr: I think 2 options are pause the video, or conceptually continue video but muted 15:37:34 CSSWG_LogBot has joined #css 15:37:43 ? 15:37:44 Rossen_: They weren't asking for that 15:37:44 q+ 15:37:44 q+ 15:37:53 chrishtr: that's what person was asking for, however ... 15:38:06 astearns: Fits more with existing behavior of content-visibility, to conceptually run it 15:38:11 astearns: So should do that 15:38:16 astearns: and then discuss use case of pausing 15:38:25 chrishtr: Talked to developer 15:38:33 chrishtr: didn't want to keep playing video, audio is annoying 15:38:38 chrishtr: and also didn't want to take up bandwidth 15:38:43 chrishtr: easiest way was to kill it off 15:38:55 chrishtr: I do think that perf and muting things won't solve everything but will help 15:39:00 q? 15:39:06 emilio: Other question is pausing, does it fire events, does it not fire events 15:39:15 emilio: Media has a bunch of crazy things going on 15:39:23 ack fantasai 15:40:01 fantasai: Should we resolve on the timer continuing while it's actually paused? 15:40:03 q- 15:40:35 astearns: Proposed to treat video similar to animations in content-visibility, is conceptually muted, will return with intervening time skipped 15:40:41 astearns: any objections? 15:40:56 flackr: don't object, but that's not identical to animations 15:40:57 q+ 15:41:04 ack florian 15:41:06 flackr: not ticking animations is what user would have seen if animation continued to tick 15:41:08 q+ 15:41:13 flackr: but muting audio is a bit different from ... 15:41:18 q+ 15:41:25 flackr: but given that content-visibility is a perf optimization I"m not objecting 15:41:43 Rossen_: with this behavior, are there any events? 15:41:52 chrishtr: no events will fire, it's not observable 15:42:17 chrishtr: querying the element might trigger events or something, kinda like animations 15:42:24 Rossen_: So observability will be aligned with that of CSS animations as well 15:42:25 chrishtr: yes 15:42:27 my question (in case my audio won't work) is: does this mean Twitter couldn't use content-visibility & also match Alan's expectations of letting videos continuing to play even when they're scrolled offscreen? 15:42:38 chrishtr: observability to script same, observability to user a bit different because muted 15:43:05 astearns: note Twitter right now stops the video when scrolling out of view 15:43:28 dholbert: Twitter version that matched Alan's expectation mean can't use content-visibility? 15:43:35 dholbert: if want to still have audio play while off-screen 15:43:45 q- 15:43:59 astearns: You just don't use content-visibility in that case 15:44:15 dholbert: yes, but Twitter might want to use content-visibility ... 15:44:23 TabAtkins:... 15:44:23 conten-visibility: hidden pause; 15:44:36 q? 15:44:51 dholbert: I feel like I"ve heard from our media team that we already stop streaming video in background tabs, there's optimizations that can be made there 15:44:51 zakim, close queue 15:44:51 ok, astearns, the speaker queue is closed 15:44:56 dholbert: maybe can do that here too 15:45:23 q- 15:45:25 ack dholbert 15:45:33 ack smfr 15:45:35 smfr: websites like youtube and ?? 15:45:40 smfr: manipulating through script 15:45:44 s/.../the benefits of c-v are precisely that the browser can stop committing resources to things, rather than keeping videos around multiple times/ 15:45:52 smfr: if no notification to video that it's being paused, will still run all that stuff 15:45:55 smfr: which is a waste 15:46:17 smfr: are we resolving for skipped content (also affects content-visibility:auto) or only content-visibility:hidden 15:46:25 chrishtr: proposal is to apply to all skipped content 15:46:39 smfr: are we trying to avoid detectability of when content becomes skipped or unskipped? 15:46:53 chrishtr: the events that determine whether skipped, can also consider 15:46:57 chrishtr: raised issue of ? video 15:47:07 chrishtr: or youtube video automatically pause themselves when they notice that they are skipped 15:47:16 chrishtr: in order to raise the other use case in the discussion 15:47:35 ack fantasai 15:47:35 fantasai, you wanted to respond to flackr 15:47:41 fantasai: wrt the idea that muting the audio isn't entirely consistent 15:47:44 zakim, open queue 15:47:44 ok, astearns, the speaker queue is open 15:47:49 fantasai: it kinda is if the audio is part of the visibility of the element 15:47:54 fantasai: which is true in an audio enviro 15:48:02 fantasai: so don't think it's entirely inconsistent 15:48:12 fantasai: not sure if this is the mechanism we want to use to allow videos to be paused 15:48:18 rego has joined #css 15:48:21 fantasai: might want to do it more explicitly, rather than building it into this 15:48:32 +1 for more explicit control. you don’t want Command-F to start videos making noise 15:48:34 fantasai: bc depending on the use-case you might want it to still play 15:48:53 florian: idea reasonable, especially with event that allows you to customize behavior 15:49:03 florian: maybe can then combine with API to pause an entire subtree 15:49:21 florian: but comment from smfr got me wondering, if you just think about things being skipped or not being off-screen, whole thing we discussed is reasonable 15:49:27 florian: but if things are unskipped 15:49:43 florian: suppose you search for word 'play', then they all start playing with video 15:49:47 florian: not a great user experience 15:50:01 florian: can no longer be skipped due to things other than being off-screen, maybe isn't great 15:50:12 flackr: if you scrolled something into view, would start playing 15:50:17 flackr: but because most search results off-screen 15:50:36 flackr: we'd resolve their style to figure out whether they match the search, but they're still off-screen and will continue to be skipped 15:50:50 chrishtr: would be able to see the track time, but not playing 15:51:01 smfr: what if UA makes all content unskipped when finding in content-visibility:auto 15:51:13 chrishtr: spec says that [...] 15:51:21 chrishtr: it will only become unskipped when scrolled into view 15:51:26 smfr: per-element granularity? 15:51:35 chrishtr: every element that becomes unskipped 15:51:42 smfr: confused about the granularity of skipping 15:51:47 smfr: suppose container with auto 15:51:59 smfr: inside it each element becomes skipped or not individually? 15:52:08 chrishtr: granularity is content-visibility:auto element 15:52:29 astearns: This seems to be more generally, could you read through spec and open an issue if it's a problem? 15:52:32 smfr: ok 15:52:50 astearns: back to media playback, any other comments before we try for a resolution? 15:52:53 [silence] 15:52:58 (There's text in with rough guidance about this exact issue.) 15:54:11 RESOLVED: conceptually play (invisibly and muted) any media playback for things that are skipped due to content-visibility, skipping any events unless queried (as for animations) 15:54:26
15:59:05 Topic: break 16:02:42 q? 16:06:04 ScribeNick: emilio 16:06:38 topic: Should transform affect scroll-direction of touchpads? 16:06:43 github: https://github.com/w3c/csswg-drafts/issues/5733 16:07:03 fantasai: the question is what happens to various ways of scrolling when you have a transform 16:07:16 ... on firefox the wheel follows logical directions 16:07:24 ... while touchpad uses physical directions 16:07:29 q? 16:07:30 ... other UAs do different stuff 16:07:34 q+ 16:07:42 ... this is not defined, do we want to specify this? 16:07:49 ack TabAtkins 16:07:54 q+ 16:07:59 TabAtkins: Given the complexity of what transforms can do to an element I doubt that we can provide strict rules 16:08:06 ... but guidance sounds good 16:08:16 q+ 16:08:22 +1 16:08:23 ack smfr 16:08:33 ... flipping an element and scrolling with the trackpad should probably scroll visually 16:08:45 ack florian 16:08:50 smfr: I'd prefer not defining this strictly, we rely on UIKit and doing something different is probably very hard 16:09:40 florian: If you manipulate a touchscreen there's a clear expectation, but mousewheel is different. Should guidance for direct manipulation sounds worth it but trackpads are harder 16:09:40 dholbert has joined #css 16:09:42 q? 16:09:50 yeah users have two, conflicting, ways that touchpads and mice should work and each user hates one of them 16:10:14 Rossen_: seems there's agreement to add guidance, would this go to overflow? 16:10:23 florian: yeah, we talking about a note? 16:10:34 Rossen_: yeah 16:10:37 florian: fine by me 16:10:50 RESOLVED: Adding a note describing the behavior to the css-overflow spec 16:11:17 topic: scroll-index 16:11:20 github: https://github.com/w3c/csswg-drafts/issues/5670 16:11:34 florian: not my issue but I wanted to give it some attention 16:11:39 q+ 16:11:58 ... The use case is something we see on lots of websites, with a top banner that disappears but reappears if you scroll up again 16:12:08 ... This author is thinking of this in terms of nested scrollers 16:12:24 ... where your top banner is in a scroller outside the inner one 16:12:38 ... we always prioritize the inner scroller 16:12:43 q+ 16:13:00 ... but the author was proposing to prioritize the outer scroller, and only when that is exhausted scroll the inner one 16:13:23 ... no strong opinion, there could be some parallels with overscroll-behavior 16:13:30 ... just wanted to bring some attention to the issue 16:13:43 TabAtkins: I find the use case good to address because lots of sites do this badly 16:13:49 ... but I think this approach is not the way to go 16:14:01 ack TabAtkins 16:14:06 ... first this doesn't do what lots of sites do which is having a minified banner 16:14:24 ... second, it seems very easy to screw up a page if you only test on desktop 16:14:31 ... the current behavior is safer for that 16:14:39 ... So I think the problem is good, the solution is bad 16:14:47 ... we probably want another way to do this 16:14:48 ack flackr 16:14:56 flackr: I was going to point pretty much the same 16:15:13 ... you only want to do this scroll priority inversion for the topmost scroller 16:15:29 ... if you have nested ones then scrolling the header is probably not what the user intended 16:15:30 q? 16:15:36 ... so it seems a bit of a problematic solution 16:15:50 Rossen_: sounds like the use case is well recognized, but the proposed solution is not 16:15:52 agree with robert and tab 16:16:05 ... I suggest to go back to the issue to discuss the solution 16:16:26 florian: so the issue was proposing the solution, you're proposing to repurpose it right? 16:16:27 Rossen_: sure 16:16:34 florian: sounds good 16:16:48 Rossen_: yeah, it seems like we should explore a good solution for this problem 16:17:30 topic: republish fonts 4/5 16:17:35 github: https://github.com/w3c/csswg-drafts/issues/6462 16:17:58 chris: we discussed this already and have a resolution so I'm puzzled 16:18:05 github: none 16:18:09 astearns: it seems the tag didn't get taken off 16:18:52 topic: Replaced elements canvas, img, etc should behave as expected when styled with relative sizes in grid, transferred size should not affect them unless specifically asked to 16:19:06 github: https://github.com/w3c/csswg-drafts/issues/6278 16:19:19 TabAtkins: iank_ asked us not to resolve on this, but we can probably discuss 16:19:24 seems to capture not only an issue but also a proposed resolution 16:19:25 Rossen_: should we move on to other issues? 16:19:37 TabAtkins: let's move on 16:19:42 github: none 16:20:03 topic: Any needs to avoid other layers overriding name-defining @-rules? 16:20:15 github: https://github.com/w3c/csswg-drafts/issues/6461 16:20:39 miriam: so it's possible to give importance to e.g. using an animation (like using !important on animation-name) 16:20:58 ... but there's no way to do the same for the animation definition itself 16:21:31 ... we discussed how name-defining constructs should behave for layers, but there's no way to make them difficult to override 16:21:48 ... that seems fine to me but OP wondered about whether there's a use case for it 16:22:13 TabAtkins: without a strong use case I'd rather avoid adding another level of layering given they interact with tree scopes already 16:22:15 miriam: agreed 16:22:45 fantasai: how many of these things we have? We haven't needed one so far 16:23:28 fantasai: layers end up reordering these name-defining constructs, and the question is whether it's needed to make them important 16:23:45 ... important is really about needing something to be overridden 16:23:51 q? 16:24:06 q+ TabAtkins 16:24:10 The fact that nobody's request the ability to put !important on these constructs so far (which is today's poor-man versino of layers) suggests it's not needed 16:24:14 ... I don't think we need to add an importance mechanism to these name-defining constructs 16:24:38 q- 16:24:41 q- TabAtkins 16:24:56 [emilio agrees with TabAtkins] 16:25:07 Rossen_: seems like we should move on until there's a stronger use case 16:25:27 RESOLVED: Close no change, we should get a stronger use case 16:25:48 topic: Allow authors to explicitly place unlayered styles in the cascade layer order 16:25:54 github: https://github.com/w3c/csswg-drafts/issues/6323 16:26:20 miriam: this one is another coming from an earlier resolution 16:26:28 ... we resolved that unlayered styles are lower pri 16:26:49 present- 16:26:53 ... jen asked about whether it'd be useful to tweak the unlayered styles priority 16:27:15 ... there's some syntax proposals in the issue 16:27:22 q? 16:27:23 ... and I'd expect it to work at each level of layering 16:27:42 ... are we happy with an empty layer rule syntax? Does this become too complex? 16:28:11 florian: I could see use cases for top/bottom, has any non-theoretical use case come up for in the middle? 16:28:37 miriam: yeah, you want components at the top and resets on the bottom, so you might want most of your styles between them 16:29:11 TabAtkins: Like florian I see the use case but I'm not sure we need to solve it right now 16:29:25 ... we could resolve the CSS wide keywords as layer names in case we want to solve them 16:29:40 miriam: does that become a problem if additional wide-keywords are added? 16:29:44 ack fantasai 16:29:54 TabAtkins: theoretically? But we haven't added many over the years 16:30:06 s/resolve/reserve/ 16:30:07 fantasai: we could also do something that isn't a keyword 16:30:27 ... I don't have strong opinion on having to solve this now, and I'd be ok reserving the wide-keywords 16:30:30 s/keyword/keyword, like an asterisk/ 16:31:14 florian: maybe I need to re-read the minutes for when we decided to switch top/bottom, I wasn't there and it seems !important could take care of jumping to the top 16:31:29 miriam: main reason for that was that putting them at the bottom allows progressive enhancement 16:31:56 ... sort of like when not all browsers had media queries you'd write the specific styles in there 16:32:19 ... but lots of people think of layers as a way to hide their resets 16:32:47 florian: I guess I see it more like the later but that also doesn't give me a strong use case for having unlayered styles in the middle 16:32:56 ... I'd be fine reserving the wide keywords though 16:33:16 fantasai: so there's the question of whether we add it now, if we don't we might want to just reserve the keywords 16:33:32 miriam: if we're not sure if it's needed I'd be ok with reserving the keywords and delaying 16:33:43 ... since it adds a fair amount of complexity 16:34:36 florian: what do we need by reserving the keyword? Just making them syntactically invalid? 16:34:53 fantasai: yeah, if you define @layer with that keyword the whole block is in invalid 16:35:29 florian: is that progressively-enhanceable? If you add a layer that doesn't work and then it starts working... 16:35:49 fantasai: why would you type it in if it doesn't work? 16:36:30 florian: would it be wholly invalid or just ignored? 16:36:43 TabAtkins: could we bring that detail back to the thread? 16:37:19 Emilio: fwiw it seems simpler to make the whole block invalid at parse time 16:38:01 RESOLVED: Reserve the CSS wide-keywords (making the whole layer block invalid at parse time) for now and details TBD when we have better use cases 16:38:56 topic: Need method to interpolate variable font settings 16:39:08 github: https://github.com/w3c/csswg-drafts/issues/5635 16:39:19 https://typetura.com/ 16:39:23 astearns: This was raised by scott a while back along with other issues 16:39:39 ... he works on typetura which does a lot of fancy things with responsive typography 16:39:55 ... and he'd like to do fancier things and helpfully filed a bunch of issues 16:40:02 ... but they didn't get a lot of attention 16:40:18 ... so I raised them to get some attention from the group 16:40:29 q 16:40:32 q+ 16:40:32 q+ 16:40:39 ... he wants to interpolate variable font settings that are numbers with e.g. viewport lengths 16:40:54 ... can't use calc() because incompatible units 16:41:08 q- 16:41:10 TabAtkins: it's perfectly fine to use calc(), you just need to divide the unit away 16:41:24 ... unless there's something more subtle going on we should be fine on this issue 16:41:30 ack TabAtkins 16:41:35 dlibby has joined #css 16:41:44 I was going to say the sam as tab 16:41:44 astearns: there are some other subtleties, calc() might be limiting, but let's do this on the next issue 16:42:18 calc(19px/1px) 16:42:46 chris, wouldn't you just write 19 at that point? 16:43:07 emilio: Tracking multiple units doesn't work, but dividing the same units and getting an integer possibly works already? 16:43:25 if you have some length and it happens to have px, you can convert it to number by dividing out the unit 16:43:43 RESOLVED: No change, should work with already-in-the-spec calc() improvements 16:43:53 but what I put was a handy test 16:44:07 topic: Higher level CSS interpolation module 16:44:17 github: https://github.com/w3c/csswg-drafts/issues/5617 16:44:24 astearns: this also might be covered in-spec but not impls 16:44:43 ... in addition to using calc() across various types, they want to use easing functions for ~all properties 16:44:45 q+ 16:45:06 ... haven't looked at it in a while, but perhaps we can use easing functions in all properties or is it more limited than that? 16:45:34 chris: when we added animations and before with SMIL we got some feedback from animators saying that it only worked on two values 16:46:11 ... so this is a thing we want any time we transition, animate or interpolate 16:46:18 ack chris 16:46:23 yes, done 16:46:34 astearns: and I don't think we have any of the easing editors on the call 16:46:44 ... it seems they are meant to be used anywhere where a value could be set 16:47:00 fantasai: wdym with that? 16:47:08 https://www.w3.org/TR/css-easing-1/#easing-functions 16:47:14 ... they are meant to be used where an easing function is asked for 16:47:20 q+ 16:47:22 ... it's a function, not a value 16:47:40 astearns: I believe scott's ask is for things like optical sizing to be able to use easing functions as values 16:47:47 seems like a reasonable ask 16:47:55 ... to be able to have more subtle transition across values 16:48:06 fantasai: you need a range of values for that as well 16:48:24 lea: if I'm reading this correctly, easing functions is just a minor piece of that issue 16:48:31 q+ 16:48:35 ... there are other important issues like mixing relative units 16:48:41 ... you need to do ?? manually in keyframes 16:48:55 s/??/spacing/ 16:49:06 ... I didn't open this issue and scott isn't here, but I think the idea is to unify all these interpolation mechanisms 16:49:07 ack lea 16:49:14 ... so that the same features are available everywhere 16:49:17 ack miriam 16:49:45 miriam: when interpolating between breakpoints wrt media/container queries, part of the complexity is that you have to set those breakpoints and then somehow attach an animation to those breakpoints 16:50:05 ... I've thought a bit to scrolling animations and animation timelines linked to container / media queries 16:50:09 q=+ 16:50:10 q+ 16:50:12 ... not sure if something like that would help 16:50:23 ack argyle 16:50:37 https://shadows.brumm.af/ 16:50:40 argyle: I use a lot of online tools that would generate things for me like shadows (^) 16:51:02 ... what I'd like to do instead of something like this is letting CSS do this with a clamp-like function 16:51:25 ... so that I can get an easing shadow with a natural curve 16:51:48 ... it'd be really cool to pass curves to shadows / gradients / etc rather than a bunch of percentages 16:52:10 ... almost anywhere where we accept multiple values we could shorten the entire stack into one or two by specifying the range and a curve 16:52:25 ... if you're looking for use cases for stuff like this I can help 16:53:19 astearns: I think this is very relevant, there are lots of use cases to express stuff in terms of curves of values. not quite sure where to start though 16:53:30 Rossen_: where do we go from here? Is this the most appropriate issue to capture this? 16:53:48 astearns: bkardell suggests this as an expansion to web-animations-2 16:54:11 s/bkardell/birtles/ 16:54:13 emilio: Use cases adam mentions aren't particularly animation-like 16:54:35 Rossen_: shouldn't but it's where most that stuff is defined 16:54:42 q? 16:55:30 Rossen_: sounds like enough motivation was heard. There are some overlapping efforts in the interpolation space with animations-2, and if that's not enough we need to figure out what else is needed 16:55:51 ... is there anything else we can do with this issue? 16:56:33 +1 to work on it 16:56:43 RESOLVED: This is something we want to work on, exact details TBD 16:57:26 topic: other pubs? 16:57:31 s/you need to do ?? manually in keyframes/gradient stops can automatically be evenly spaced, whereas it needs to be done manually in keyframes/ 16:57:42 topic: FPWD for nesting 16:57:58 https://drafts.csswg.org/css-nesting-1/ 16:58:27 TabAtkins: We've discussed nesting a bunch of time, has matured a lot. There's the OM bits, etc. Gotta do some work on syntax 16:58:35 +1 to FPWD, LGTM 16:58:39 +1 to FPWD 16:58:42 ... we have agreement that this is a good idea, I'd like to request FPWD 16:58:45 +1 to FPWD 16:58:47 +1 16:58:52 +1 16:59:10 RESOLVED: publish FPWD of nesting 16:59:13 This is possibly the main reason authors still use preprocessors, if I could +100 I would 16:59:22 Agreed, lea 16:59:52 Rossen_: what's the status of logical? we have min-block-size defined but not on TR 17:00:08 ... not published since 2018 17:00:28 https://www.w3.org/TR/css-logical-1/#propdef-min-inline-size 17:00:41 ... it's the only thing implemented everywhere but not on a WD 17:00:48 fantasai: it is on TR (^) 17:01:01 ... we should update it, there's lots of specs we should update 17:01:15 Rossen_: there's stuff in the ED which is not in a public WD 17:01:21 ... we should revisit this 17:01:38 Rossen_: that's everything for today, let's end here 17:02:03 Topic: end 17:04:21 chris has left #css 17:04:54 https://www.w3.org/TR/css-logical-1/#property-index 17:08:41 Zakim, end meeting 17:08:41 As of this point the attendees have been Rossen_, alisonmaher, Morgan, emilio, miriam, TabAtkins, fantasai, florian, chrishtr, dholbert, oriol, dandclark, rachelandrew, argyle, 17:08:45 ... una, jensimmons, dbaron[m], cbiesinger, lea, flackr, eugene, GameMaker, jfkthame, smfr, hober 17:08:45 RRSAgent, please draft minutes v2 17:08:45 I have made the request to generate https://www.w3.org/2021/07/27-css-minutes.html Zakim 17:08:47 I am happy to have been of service, Rossen_; please remember to excuse RRSAgent. Goodbye 17:08:51 Zakim has left #css 17:20:39 dgrogan has joined #css 18:52:09 castastrophe has joined #css 21:02:11 funkeeflow has joined #css