15:55:05 RRSAgent has joined #css 15:55:05 logging to https://www.w3.org/2022/09/15-css-irc 15:55:08 RRSAgent, make logs Public 15:55:09 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 15:56:11 heycam has joined #css 15:58:43 myakura has joined #css 16:00:14 foo has joined #css 16:00:35 Morgan has joined #css 16:01:05 ppl on the call - can you hear the room? 16:01:13 GameMaker has joined #css 16:01:15 yes! 16:01:26 duga has joined #css 16:01:49 http://wpt.live/css/css-sizing/aspect-ratio/replaced-element-028.html - this test asserts that `aspect-ratio` does not apply to broken images. All browsers pass this test. However, I think the intent of the test is that `aspect-ratio` should be ignored because the failed image should display as `inline`. However, that is not true in Chrome and Safari (it's like `inline-block`. So, by passing this test, it feels like Chrome and Safari are doing it 16:01:49 wrong. Can anyone confirm? 16:01:55 alisonmaher has joined #css 16:02:12 smaug has joined #css 16:02:45 Present+ 16:02:52 present+ 16:02:53 present+ 16:02:54 flackr has joined #css 16:02:55 Present+ 16:02:55 present+ 16:02:57 present+ 16:02:58 present+ 16:03:05 present+ 16:03:14 present+ 16:03:24 present+ 16:03:40 present+ 16:03:49 present+ 16:03:55 Scribe: Cameron 16:03:59 ScribeNick: heycam 16:04:06 present+ 16:04:55 castastrophe has joined #css 16:05:18 fremy has joined #css 16:05:37 tantek has joined #css 16:05:47 bkardell_ has joined #css 16:05:56 jondavis has joined #css 16:05:58 present+ 16:06:02 present+ 16:06:05 present+ 16:06:13 present+ 16:07:23 ydaniv has joined #css 16:07:41 present+ 16:07:52 prushforth has joined #css 16:07:56 present+ 16:08:37 Ian Kilpatrick, Google 16:08:48 Manuel Rego, Igalia 16:08:51 present+ 16:08:51 present+ 16:08:55 andreubotella has joined #css 16:09:50 Peter Rushforth, Natural Resources Canada 16:10:15 present+ 16:10:53 Topic: Approaches for dispatching highlight pointer events 16:11:00 dandclark: problem we're trying to solve is making custom highlights interactives 16:11:09 ... for scenarios like custom spell check, annotation popups over words 16:11:18 ... a few months ago I came to the WG with a proposal for adding eventing for highlights 16:11:26 ... when tehre's a pointer event, a highlight, we get a first crack at it 16:11:31 ... dispatch events at highlights in priority order 16:11:39 ... if none preventDefault() it, we give it to the normal DOM element 16:11:40 github: https://github.com/w3c/csswg-drafts/issues/7513 16:11:47 ... goal here would be to allow non-coordinating highlight libraries to do reasonable things 16:11:51 q? 16:12:05 ... if you have say a spell check library, and a annotation library running, stopping propagation of an event would avoid two popups at once 16:12:18 ... normal event propagation would allow this coordination without the 2 librariers knowing about each other 16:12:25 ... however this is somewhat complicated, there was a simpler competing proposal 16:12:42 ... providing "highlightsFromPoint", put a click event on the body, when there's a click pass the coordinates into this function 16:12:53 ... some discussion for coming up with schemes where the events could then be dispatched in a manual way to highlights 16:13:04 ... discussed in the issue, not a great way for non-coordinated libraries to coordinate an event loop 16:13:20 ... that said, I think it's maybe worth pursuing this as a MVP API 16:13:21 ri has joined #css 16:13:27 ... seems like a useful addition to the platform 16:13:48 ... if in practice there turns out to be issues with non-coordinating highlight libraries working together, we then go back to pursue highlighting events in addition to that 16:13:53 ... CSS.highlights.highlightFromPoint() 16:13:56 ... some issues with shadow DOM 16:14:05 Seems useful to me. The coordination issue still needs to be addressed, but I don't think that blocks this as a useful ability. I like the API discussed. 16:14:09 ... first let's get some feedback from the group. is this worth it as an initial step? 16:14:12 q? 16:14:22 +1 MVP of highlights from points seems useful even if we add events 16:14:40 TabAtkins: seems useful to me. agree the coordination issue needs to be resolved, but that shouldn't block this useful primitive 16:14:48 ... if this blocks general abilities, I still think it's worthwhile 16:14:52 ... I like the API shape in the proposal 16:14:58 emeyer has joined #css 16:15:00 s/this blocks/this unblocks/ 16:15:05 present+ 16:15:06 present+ 16:15:23 olli: I agree this is probably good enough for now 16:15:32 ... might need to think about shadow DOM for now, but we can tweak the proposal for that 16:15:35 q? 16:15:57 s/olli/smaug/ 16:16:02 dandclark: seem to have agreement on adding this 16:16:07 ... would be good to dig into the shadow DOM issue 16:16:18 ... does it go on DocumentOrShadowRoot? 16:16:29 Rossen: let's resolve on adding the API, if we still have time at the end of this slot, we can come back to this issue 16:16:55 (My initial reaction is that DocumentOrShadowRoot is a good location because then it lives next to elementFromPoint, which it is similar to.) 16:17:03 RESOLVED: Add the highlightFromPoint() API to CSS.highlights or DocumentOrShadowRoot 16:17:37 Topic: Publish css-contain-1 16:17:40 https://lists.w3.org/Archives/Member/w3c-css-wg/2022JulSep/0192.html 16:17:57 florian: two years ago we published a rec of css-contain-1 16:18:01 ... since then we've made some editorial tweaks 16:18:05 ... 3 candidate changes 16:18:24 ... if you remember the process 2020, we can make normative changes in a rec through a process of annotating them as editorial in the rec, then if they're editorial we can republish without permission 16:18:34 ... and use that to highlight things we want to change, withotu changing them yet 16:18:39 ... we have a 3rd change in an ED for a while 16:18:39 no open issues: https://github.com/w3c/csswg-drafts/labels/css-contain-1... (full message at https://matrix.rivoal.net/_matrix/media/r0/download/rivoal.net/zZelGrIxxwxaJWwwGfouobbM) 16:18:43 ... status of the spec is good. no open issues 16:18:50 ... DoC all are resolved or deferred 16:18:56 ... I wrote an implementation report for each of these 3 changes 16:19:04 ... we have exhaustive tests, passing in at least 2 browsers, sometimes in 3 16:19:18 ... I think we should republish this rec, mark these 3 changes as proposed changes, which will trigger AC review 16:19:38 q? 16:19:39 ... then we can ask the director (or his delegates) to get to an actual rec while the patent reviews etc. are going, horizontal review, etc. 16:19:47 ... these are minute changes, so I don't think anything will come up 16:20:10 ... asking for WG approval to republish css-contain-1 as a Rec with these 3 changes highlighted in it as proposed changes 16:20:27 ... there is a level 2 of css-contain, and I have checked that they are in sync 16:20:58 RESOLVED: Republish css-contain-1 as a Recommendation 16:21:22 RESOLVED: ... with the 3 changes marked as proposed changes 16:21:40 Topic: highlight pseudos and non-applicable properties 16:21:43 github: https://github.com/w3c/csswg-drafts/issues/7591 16:22:39 fantasai: look at the example in the issue 16:22:48 ... it's showing a ::highlight with a text-shadow with an offset expressed as 1em 16:23:03 ... there's a parent selection pseudo with a font-size:69px, and the actual element has a font-size:42px 16:23:13 ... font-size does not apply to ::highlight, so the actual font is going to be 42px 16:23:19 karlcow has joined #css 16:23:37 ... the question is, when we're computing the value of 1em, are we using the font-size assigned to the selection even though it doesn't apply, and cannot apply, or do we ignore that font-size and use the value from the originating element? 16:23:40 q+ 16:23:44 s/::highlight/::selection/ 16:23:46 present+ 16:23:54 fantasai: implementations do various things. Blink uses the initial value, which is 16px 16:24:05 ... the question is what do we want to do? 16:24:15 present+ 16:24:19 ... using the actual font-size would give the most expected results from the author perspective 16:24:24 dandclark: I agree with that 16:24:25 ack dandclark 16:24:33 q+ 16:24:34 ... definitely seems the most intuiitive thing here, i.e. the font-size of the originating element 16:24:43 ... anything else seems strange to me 16:24:54 ack emilio 16:24:59 emilio: we have precedent for this 16:24:59 dholbert has joined #css 16:25:09 ... things like ::placeholder already ignore a bunch of properties, and they do so by ignoring the declarations 16:25:14 ... so as if the font-size declaration wasn't there 16:25:21 ... I htink that's what's being proposed here, and I think that's reasonable 16:25:42 fantasai: proposed resolution is we use the actual, effective font-size (and font-family, etc.) here 16:25:51 emilio: can we word it as declarations of not supported properties are ignored instead? 16:26:06 fantasai: it inherits from the parent selection 16:26:11 emilio: that's trickier then 16:26:18 fantasai: we can say both things 16:26:30 emilio: I think that's weird 16:26:37 ... I'd rather keep it simple and ignore the declarations 16:26:49 astearns: if we ignore the declarations, and just do the normal inheritance, even though the value is ignored, don't we get what we want? 16:26:52 fantasai: you get the initial font-size 16:27:03 emilio: or the root element's font-size 16:27:13 ... weird to add another source of inputs here 16:27:24 Rossen: if we don't do that what makes most sense? 16:27:36 ... on one hand we have the default 16px 16:27:39 ... that seems less useful 16:27:46 astearns: don't understand why we get the initial font-size 16:27:51 ... the pseudo is on an element that has a font-size 16:27:55 fantasai: but it doesn't inherit from that element 16:28:05 ... ::highlight inherits from the parent element's selection 16:28:24 ... we rewired highlight inheritance like this 16:29:12 Rossen: the intiial font-size, is that because you simply end up with the root size? 16:29:13 fantasai: yes 16:29:42 ack dbaron 16:29:45 dbaron: I was just thinking about the desired behavior here 16:30:10 ... if you have a selection with text-shadow that's got a 1em in it, and that selection crosses elements with different font sizes, do you actually expect that the shadow has a different offset or spread as the selection crosses those elements? 16:30:18 fantasai: maybe, maybe not 16:30:22 ... depends on what you were aiming for with the effect 16:30:31 ... I think having it be consistent across them is not unreasonable 16:30:36 Rossen: what do we do for outline? 16:30:38 fantasai: that doesn't inherit 16:31:01 dbaron: one of the other factors here is that a principle about selection styling is that you shouldn't get different results depending on where the selection starts 16:31:07 q+ 16:31:31 ... so if your selection starts further up ancestor, which has a different font-size, versus a narrow selection scoped to a descendant with a different font size, those descendants shouldn't render differently 16:31:37 fantasai: I think both proposals follow that principle 16:31:41 ack JakeA 16:31:49 JakeA: is currentColor an issue here? for the same reason? 16:32:04 fantasai: currentColor inherits as its own keyowrd, and resolves on each element 16:32:13 ... for highlights it has some special behavior 16:32:38 ... I think maybe it's just on the color property? it doesn't look as its parent, it looks at its originating element 16:32:49 Rossen: I think following David's principle, that principle is satisfied 16:32:50 CSSWG_LogBot has joined #css 16:32:56 ... from the user's PoV this is arguably what you want 16:33:07 ... to Jake's point, if we model this on the same way color / currentColor works ... 16:33:18 fantasai: color inherits from the parent selection, not the originating element 16:33:28 ... currentColor on all other properties than color, looks at color 16:33:42 ... normally color:currentColor is like inherit, but for highlights it takes the originating element's color 16:33:59 ... so if you have a highlight where you're only doing say underlining, it gives you a way to "use the original color" 16:34:02 ... rather than parent's color 16:34:18 Rossen: so for em resolution 16:34:24 ... seems like we could have the same behavior 16:34:30 q+ 16:34:42 heycam: If you set font-size:inherit... 16:35:00 heycam: analog is, you're using the currentColor keyword on a property other than color, is the analogy is for having em values in some other property 16:35:16 heycam: if you used em values in the font-size property, that's more of an analog to using currentColor in color property 16:35:17 ack JakeA 16:35:21 JakeA: when you talk about the originating element of the highlight 16:35:28 ... what happens in the case where the highlight spans multiple elements? 16:35:35 fantasai: multiple pieces of highlight, each has an originating element 16:36:18 ... if we consider dbaron's comment, making font relative values always resolve against the initial values seems to be most consistent with the principle 16:36:26 Rossen: I'd argue from a user PoV that makes no sense 16:36:45 ... [something about highlight sizes] 16:36:54 fantasai: the size of the highlight doesn't change 16:37:03 dbaron: I tend to be in favor of what Elika just proposed 16:37:09 q+ 16:37:10 ... the alternative seems like it would be hard to implement 16:37:29 proposal was that, since having consistent resolution from 1em is not unreasonable in many cases, and is already implemented in Blink, then we should resolve on that 16:37:32 ... and I don't think we've heard any good use cases for the alternative, i.e. do people really have demands for em offsetted text-shadow that varies on elements 16:37:50 miriam: would it be closer to author intent to use root ems instead of browser default? 16:37:56 emilio: that's the behavior you get when you ignore declarations 16:37:58 ack miriam 16:38:01 fantasai: I think the spec is a bit unclear on that 16:38:09 ... so whatever we decide here is how we'll clarify it 16:38:48 Rossen: hearing consensus forming around Elika's proposal, with using root ems intead of the initial value of font-size 16:38:50 ... any other proposals? 16:39:18 dandclark: should this be more general than font-size? 16:39:22 ... lots of other properties that don't apply to highlights 16:39:36 fantasai: we're applying it to all font properties, taken from the root 16:39:50 ... all of the decalrations on pseudos that are defined not to apply are ignored 16:40:49 fantasai: proposed resolution: declarations on highlight pseudos defined as not applied are ignored, and font properties are all taken from the root element 16:41:19 RESOLVED: Properties that don't apply on highlight pseudos are ignored 16:41:59 fantasai: I think we say that for the ::selection on the root element (and therefore inheriting down into other highlights), all of the font settings are taken from the root element 16:42:27 RESOLVED: for the highlight pseudos on the root element, all of the font settings are taken from the element 16:43:04 Topic: @image rule for manipulating images 16:43:07 github: https://github.com/w3c/csswg-drafts/issues/6807 16:43:59 TabAtkins: this is a request for feedback and possible WD, precised details are being discussed on the thread 16:44:06 ... this is a request for a way to manipulate images directly in CSS 16:44:12 ... right now you can do a handful of things directly in CSS 16:44:18 ... certain repetitions with background properties 16:44:27 GameMaker has joined #css 16:44:40 ... but anything more complex, running a filter on it, opacity, etc. your only choice is to use a separate image, or to put it on a declarative element and then apply CSS properties to that element 16:44:57 ... this is trying to split the different, and allow existing existing effecfts (transforms, filters), directly in a CSS image 16:45:08 ... rough approach is an @image rule, which provides a doubel dashed name 16:45:26 ... a bunch of descriptors, which takes a src image, then others which are copies of other CSS properites that do useful things 16:45:34 ... currently only supporting things you can already do to elements 16:45:43 ... once defined, you could use this image in CSS 16:45:50 ... image(--foo) 16:46:05 q? 16:46:08 q+ 16:46:24 ack heycam 16:46:31 heycam: Alternative approach is to slam all of these filtering and transforms into the image() function itself 16:46:42 heycam: if you need to re-use that, put it all into a custom property 16:46:47 heycam: have you thought about that? 16:46:47 TabAtkins: I don't believe there's a great reason to go one way or the other 16:46:58 ... back in the day, using it in an image() function you'd need to repeat it 16:47:02 ... but with variables it's not a huge deal now 16:47:33 ... some bits of functionality like image layering have been discussed, but more widely as pulling in SVG's filter capabilities via nested at rules 16:47:38 ... having them be consistent in approach would be nice 16:47:47 ... but now that I bring that up, it could still be done using CSS functions 16:47:59 ... it would be a matter of what we find more convenient to do, or more natural 16:48:05 q+ 16:48:07 ... don't think there's a huge way to go one way or the other 16:48:12 ack dbaron 16:48:18 dbaron: could you talk briefly about how sizing of these images works? 16:48:20 ... looks like there's some sizing related properties in there 16:48:29 ... transforms and filters which might have sizing implementations 16:48:33 karlcow has joined #css 16:48:34 TabAtkins: you have a width/height property 16:48:40 ... that's the natural width/heihgt of the produced image 16:48:44 ... scaling etc. would be purely visual effects 16:48:51 q+ 16:48:55 ... it would scale it within the bounds of the width/height that's already been provided 16:49:01 ack JakeA 16:49:07 JakeA: for blurring a low quality image as a placeholder 16:49:18 ... that's difficult with filters now, because it blurs the edge as well 16:49:24 ... here you want to recognize the edge and not blur the transparency into it 16:49:33 ... so it works a bit more like backdrop-filter 16:49:40 ack andreubotella 16:49:53 andreubotella: could you use such an @image rule in the src property? 16:50:02 ... if you already have declared an image, then you want to apply some further transformations to that? 16:50:30 ... and for the current properties, it seems like you could apply a set of properties to multiple images 16:50:39 TabAtkins: the exact answer to that depends on what we want to define 16:50:48 ... being able to put a generated image in as the source of a new generated image is reasoanble 16:51:09 q+ 16:51:12 ... whether that gets rasterized then transformed, as if it's an independent image, or these transformations are additively appended to the list of existing transformations in some intelligent fashion? no opinion 16:51:23 ... both have pros/cons. simplicity on one side, understandability 16:51:31 ... avoiding rasterization effects 16:51:37 ... both seems potentially reasonable 16:51:42 ... can discuss those 16:52:02 andreubotella: thinking also maybe not having it rasterized, that might limit the properties we could add to @image rules 16:52:18 TabAtkins: I think everythign we've discssed so far in the thread is compatible with just holding it as a scene graph 16:52:30 ydaniv: might be some advantage to have this rasterized beforehand 16:52:34 ack ydaniv 16:52:41 ... if you're just setting the properties outside the at rule, you could have them animated 16:52:59 ... then if you want to do further animations on the element, then have the browser apply all of these at the same time every frame, could be heavy for the browser to handle 16:53:08 ... so maybe this could be some sort of performance boost 16:53:49 ... another thing that might be way off, if you're thinking about syntax, having this for replaced images, object manipulation, that could be useful 16:54:08 ... so not just for background-image, values, but use the same manipulations on replaced elements like straight on an element 16:54:30 TabAtkins: right now you can take any replaced element and put properties on it 16:54:48 ... but you want to be able to run these on the underlying image itself, and still be displayed in the bounds of the image element? so apply a rotate to the source image? 16:55:19 ydaniv: I want to optimize for having the src already rasterized, then if I'm rotating the image outside, then the browser doesn't have to handle rasterizing every frame 16:55:29 ... what you're saying is another use case which is also valuable 16:55:39 ack dbaron 16:55:39 dbaron, you wanted to talk about ordering 16:55:48 dbaron: Andreu's comment made me think about another set of questions about the ordering of these operations 16:56:01 ... in CSS, a bunch of these things are properties where the order that they apply in is defined by our processing model 16:56:13 ... the relative ordering we apply opactiy, filter, transform, etc. on a single element is defined by CSS's processing model 16:56:41 ... one thought is that re being able to nest the output of one of these as the source of another, that's probably quite useful, since sometimes you want to apply these things in a differetn order than how CSS's processing model works 16:56:53 TabAtkins: os the same descriptor multiple times in different fashions 16:56:55 s/os/or/ 16:57:25 dbaron: maybe falling back to that processing model isn't the right thing here? for this rule, the graphical operations maybe shouldn't be order independent? 16:57:30 ... so the order of the descriptors matters 16:57:41 TabAtkins: if you have them in an order, that implies you should be able to repeat: rotate, blur, rotate 16:57:46 ... first, object model issues 16:57:59 ... also, that would run into our forward compat fallback ability 16:58:10 ... where you can say something twice and ignore the first, unsupported value 16:58:18 ... but I like the way you are thinking 16:58:25 ... having this order be controllable is probably a great idea 16:58:30 q? 16:58:31 q+ 16:58:41 ack emilio 16:58:47 emilio: that kind of issue disappears if you add the operations in the image() function 16:59:01 TabAtkins: yes, it removes the fact taht ordering and repetition is ap roblem 16:59:09 ... now support is an all or nothing for the entire graph 16:59:30 ... on the other hand, if an image transform isn't supported, and you are trying to rely upon it, you probably do want the whole thing to fail 16:59:36 ... so that is an argument in favor of a function 16:59:39 q+ 17:00:07 heycam: I realized that there might be a semantic difference between image() and the at rule 17:00:09 ack heycam 17:00:21 ... each of those are a different image 17:01:10 ... is there any situation where having the image defined in the at-rule lets you have a single place where you can do image manipulations, where with image() you'd need to apply the transform to all uses of the image() function 17:01:19 ... it's probably not an issue, I don't think they can express different things 17:01:39 TabAtkins: being able to say that one in an at-rule there's an efficiency arg to be made there 17:01:40 TabAtkins: how to animate an at rule is an open question 17:01:47 ... how to animate a function is already a reasonably solved problem 17:01:52 ... match up lists, animate individual parameters 17:02:43 TabAtkins: does the WG feel this is OK, or objectiosn to the approach in general? 17:02:55 fantasai: my main concern is prioritization wrt other things we're doing 17:03:00 ... other than that doesn't seem terrible 17:03:04 Rossen: from a use case approach, it's fine 17:03:12 fantasai: definitely needs a lot more work 17:03:18 Rossen: that's like most other work we take on 17:03:21 fantasai: this is not a small task 17:03:33 Rossen: assuming Mia and others will be contributing to this? 17:03:36 TabAtkins: I'm shepherding this 17:03:54 /s/Mia/Lea/ 17:03:55 Rossen: acknowledge this adds more work to the group, but I'm hearing support for the use case and approach 17:04:02 ... so I'm personally OK with this 17:04:04 s/Mia/Lea/ 17:04:18 TabAtkins: do we want this added to images 5, or is it larger enough to be split out? 17:04:20 fantasai: what else is in images 5? 17:04:23 Rossen: almost nothing 17:04:39 fantasai: current images is images-4. images-5 is just an ED, don't think there's anything even in it 17:04:50 TabAtkins: just want to know if it should be merged into the totality of the images spec 17:04:58 nigel has joined #css 17:05:37 RESOLVED: Accept @image and add it to css-images-5 17:09:15 Topic: end 17:09:16 dizhang has joined #css 17:09:16 nigel has joined #css 17:14:38 PaulG has joined #css 17:15:51 nigel_ has joined #css 17:20:11 nigel_ has joined #css 17:30:23 andreubotella has joined #css 17:32:11 Topic: CSS-APA Joint Meeting 17:32:30 chris has joined #css 17:32:43 khush_ has joined #css 17:32:45 scribenick: fantasai 17:32:48 argyle has joined #css 17:32:54 present+ 17:32:55 Rossen_ has joined #css 17:32:59 present+ 17:33:02 present+ 17:33:05 present+ 17:33:07 Rossen_ does introductions 17:33:20 present+ 17:33:23 and reminds everyone of requirements for testing and masking 17:33:59 present+ 17:34:00 present+ Janina Saika, co-chair 17:34:03 matatk has joined #css 17:34:11 present+ 17:34:15 present+ 17:34:16 Lionel_Wolberger has joined #css 17:34:24 present+ 17:34:48 eeeps has joined #css 17:35:04 Paul Grenier 17:35:06 NeilS has joined #css 17:35:07 Lionel Wolberger 17:35:11 Janina Sajka 17:35:17 Matthew Atkinson 17:35:21 present+ 17:35:24 Elika J. Etemad 17:35:25 present+ Janina 17:35:29 present+ 17:35:33 APA's agenda: https://www.w3.org/WAI/APA/wiki/Meetings/TPAC_2022#CSS_.26_APA_Joint_Meeting 17:35:36 present+ 17:35:38 Florian Rivoal, Invited Expert 17:35:58 [Rossen reviews the agenda] 17:36:06 Daniel Holbert 17:36:20 Rossen_: Anything else to add? 17:36:34 Subtopic: CSS APA Liaison 17:36:47 Janina: Pleading with this group to help us out 17:37:01 ... Years ago were doing great with Amy 17:37:07 ... Tried on our end to find a new liaison 17:37:21 ... Many of you are from relatively large corporations, probably have some junior staff you want to develop into more effective participants 17:37:30 dizhang has joined #css 17:37:33 ... if you think they have interest in accessibility, we'll train them up for you 17:37:48 ... but we are desperate, having a formal liaison really makes this relationship effective 17:39:06 [discussion of possible liaisons] 17:39:18 q+ 17:39:25 Subtopic: Contrast Ratio 17:39:32 github: https://github.com/w3c/csswg-drafts/issues/7730 17:39:35 matatk: not proposing to resolve all issues right now 17:39:55 ... wanted to use our F2F time to get background 17:40:04 ... what's the use case for this function? 17:40:07 ack chris 17:40:08 chris: Dropped link to the issue 17:40:12 nicole has joined #css 17:40:15 ... where I gave an introduction to what we want to do here 17:40:27 ... if you just have a single stylesheet, no variables, just light mode, don't need anything special 17:40:32 ... everything is constant 17:40:47 ... but if you have theming and customization, and stylesheets merged from multiple teams 17:40:51 ... it will work out for you 17:40:56 ... previously, this was all done by eye 17:41:04 ... they chose contrast by eye, threw through a checker to be sure 17:41:13 also, user's bring preferences to the page: prefers-contrast (less, more, etc) 17:41:14 ... here, not necessarily have human intervention 17:41:17 ... but need to know that it will check out 17:41:39 matatk: I thought you as the author still have to give colors to choose from and isn't that deterministic 17:41:43 ... but you said it would be from variables 17:41:51 ... wouldn't you still have to know which custom properties would be applicable? 17:41:57 chris: yes, and the list that you give is in priority order 17:42:04 ... also one of the open issues is allowing that list to be empty 17:42:16 ... and if empty, it gives you a color: either white or black, whichever more contrasty 17:42:18 note - something these lists colors are generated from a user provided image for example. 17:42:29 ... but if you want to pick a target contrast, then willl look for that 17:42:45 chris: other big issue open atm is WCAG2 has a contrast algorithm which gives a lot of false positives and false negatives 17:42:49 ... and we want to do btter 17:43:00 ... I've implemented a bunch of contrast algos in JS so ppl can play with it 17:43:04 https://colorjs.io/docs/contrast.html 17:43:15 matatk: As side project, I had to write a functio nthat gives white or black from bgcolor 17:43:18 ... so that's very helpful 17:43:27 ... we'll follow the discussions and offer what advice we can 17:43:58 janina: WCAG's color contrast rule is problematic in many ways 17:44:07 ... including that some ppl don't do well with very high contrast, as you noted 17:44:25 chris: It used to point to obsolete draft of sRGB, now it's updated 17:44:39 janina: Plan to be smarter in 3, but quite a ways out, so time to get it smarter 17:44:44 ... would be willing cooperators in that 17:45:00 q? 17:45:31 Subtopic: Content Module 17:45:54 matatk: Adapt TF is working on, for decades, been through coda and aria and now become its own TF 17:46:08 ... what we're trying to do is to facilitate adaptations being made for pages to help ppl with cognitive and learning disabilities 17:46:20 ... as well as ppl who are busy, or have a migraine, or other temporary barrier 17:46:32 ... split and focus on different things, but some overlap with CSS to talk about 17:46:39 ... Adapt as a whole, got some transformative tech in there 17:46:56 ... but query we have specifically for you relates to potential overlap with what some of Adapt is doing and some things you can do with Media Queries 17:47:07 ... most important thing to say about Adapt is, it solves many problems, but all very similar 17:47:17 ... it attaches machine-readable metadata at the element level 17:47:19 ... to adapt 17:47:31 ... by adding a little bit of metadata, we can allow the machine to make a lot of enabling adaptations on the part of the user 17:47:46 ... I have a demo here, that we can use to discuss 17:47:52 [shares screen] 17:48:01 matatk: This is a page that is a distracting sign-up form 17:48:11 ... one thing aapt spec does is to simplify things for ppl easily distracting 17:48:18 ... for some ppl can be annoyance, for others can completely derail ppl 17:48:31 ... really critical, e.g. someone with dementia, sokmeone with a severe migraine 17:48:41 ... might need to pare this page down to be absolute core of what's required to sign up for this service 17:48:49 ... I've made this page as a dmo 17:49:09 ... got things like an animated logo, countdown timer 17:49:15 ... severa form fields to fill out, reset and submit 17:49:18 ... a marquee at the bottom 17:49:32 ... of course if you want to adapt this nowadays can use things liek prefers-reduced-motion 17:49:38 ... here the image and marquee stop moving 17:49:46 Judy has joined #css 17:49:47 ... but maybe we want to go further than this 17:49:53 ... so attributes in the page allow filtering 17:49:58 ... one is to remove sensory distractions 17:50:03 ... and it's taken away the logo and the marquee 17:50:12 ... I can also say I only want things of medium or critical importance 17:50:17 ... and this case we lose some of the form fields 17:50:23 ... that weren't as important 17:50:38 ... if I say only critical things, now also lost the reset button, all I have is the heading the clock and two form fields and a submit form 17:50:44 ... example of what can be done with adapt 17:50:53 ... Question is should we be doing more of this with Media Queries? 17:50:58 q+ 17:51:12 ... My feeling is that MQ are great for providing alternative content, but Adapt is also removing content that is distracting 17:51:19 florian: I think this is an interesting and related problem 17:51:20 ack florian 17:51:30 q+ 17:51:30 ... encourage you to think about whether author should provide all the alternatives 17:51:36 ... and let the UA make choices depending on context 17:51:49 ... or if you want the UA to tell the author what mode you're in, and make adaptations 17:52:01 florian: Let me give an example outside this field. Discussing whether to have MQ for network bandwidth 17:52:11 ... if it's too low, maybe want to swap in lower-resolution images 17:52:37 ... but suppose you enter a tunnel you end up switching to loading the lower-res images, then reload higher-res images 17:52:44 ... better to let UA make smart decisions 17:52:53 q+ 17:52:54 florian: For this case, if you want UA to make smart dynamic choices, provide alternatives and let UA choose 17:53:05 ... if best for author to decide, then MQ is more appropriate 17:53:14 ack hober 17:53:30 hober: My comment is similar vein, I was immediately reminded that many browsers have a feature called "reader mode" or something like that 17:53:42 ... where the user can make all the "junk" go away and read the content of the page 17:53:52 ... one of the reasons this works as a browser feature is that it's somewhat adversarial 17:53:59 ... not a feature that the website author is cooperating with 17:54:09 ... if you have some content that is ad-supported, ads on the Internet can be very distracting 17:54:12 ... images, sounds, etc. 17:54:27 ... but the page is not going to tell the browser that this is a distraction. They want to get paid 17:54:34 dlibby has joined #css 17:54:47 ... Florian noted on an important thing, on some level you're going to have to think of "remove the distractions" feature as something we do to the page, not something that the page wnats you to do 17:54:56 ... could be that there's both, maybe some amount of author opt-in to some of this 17:55:05 ... but what you're going to want is AT or something to impose this state on the page 17:55:06 ... without its cooperation 17:55:23 PaulG: 2 comments, first having the author provide hints for media queries 17:55:32 ... can work in a lot of contexts, especially where context is required 17:55:39 ... e.g. in investment banking, UA shouldn't be guessing what to show 17:55:58 ydaniv has joined #css 17:56:00 s/switching to loading the lower-res images, then reload higher-res images/switching to loading the lower-res images even though the high-res images were already loaded, then reload higher-res images when you exit the tunnel/ 17:56:05 ... Ad situation, have the agency to tip for service or to donate to links of our choice, if a site chose to mark their ads as optional and I chose to opt in, I'm helping to get paid 17:56:12 ... but prefers-less-captilism MQ 17:56:23 ... with MQ, fact that they apply to page and not individual components, I'm worried about that 17:56:34 +1 to prefers-less-capitalism 17:56:37 s/better to let UA make smart decisions/For such cases, better to let UA make smart decisions than expose a mode change to the author/ 17:56:37 ... worried about extensibility in the future when society chances, user needs change, how long does it take to get MQ added to UAs 17:56:43 ... how long does it take to permeate to author use 17:56:48 q? 17:56:48 ... is there another mechanism we should be looking at 17:56:59 ack PaulG 17:57:03 ack fantasai 17:57:11 fantasai: if this is a sort of markup, where the UA chooses from alternatives, and show/hide content depending 17:57:16 q+ 17:57:21 ... having standardaized markup is fine, but I think that makes sense to hook it up to a MQ 17:57:28 ... UA styles could hook that up 17:57:39 ... if you're choosing between alternatives based on user's preference, then as a MQ it makes most sense 17:57:49 ... can be queried in JS 17:57:55 ... any kind of adaptation can be made based on that 17:58:02 ... the example of image loading Florian gave doesn't really apply here 17:58:05 ... it's about time lag in that case 17:58:12 ... not a factor here 17:58:25 ... here, if you're switching modes you're want to switch modes 17:58:35 ... I agree with Tess some amount of stuff will need to be handled by the UA itself 17:58:53 q? 17:59:02 ... as far as how long it takes to add a MQ, if the user is somehow expressing a preference, and we need to expose it to the page, whether automatically based on metadata in thep age, or having a MQ, the browser has to do something to make that happen 17:59:07 ... so once we have a framework for a MQ, adding values to it won't take long 17:59:20 ... lastly, you are adding more information about the user, exposed to the page, no matter how you do this 17:59:24 ... if you add/remove content, the page can know about 17:59:30 ... if you have MQ, it can also see that 17:59:46 ... there's privacy implications to exposing this, but the page will know regardless of which technique we use 17:59:54 q? 18:00:06 ... there's more fingreprinting surface, more complexity for the author. if it's too complex for the author they won't use it 18:00:11 q+ 18:00:19 Rossen_: most of the things I wanted to mention already captured 18:00:22 ... demo page is great, thanks 18:00:36 ... I was hoping we can see an issue opened with CSSWG that we can consider at least simplification for MQ 18:00:49 ... can see something like prefers-simplification 18:00:59 ... and have authoring that helps identify what's critical medium and low 18:01:06 ... this is a great example where the ?? of the MQ can help 18:01:13 ... destruction is something we have discussed in the past 18:01:19 ... more to discuss in the TAG 18:01:24 s/destruction/distraction/ 18:01:35 ... It's the most contentions, I don't know if possible to satisfy with MQ 18:01:43 ... but maybe open some issues 18:01:55 andreubotella has joined #css 18:01:55 matatk: Can I show a 2-minute demo? 18:01:58 ack Rossen 18:02:10 ack florian 18:02:20 florian: I agree with fantasai the example I gave doesn't apply here, but you gave us a small sample of bigger project 18:02:35 ... is this a MQ, the weird scenario doesn't apply here, but that's a criteria I would use to think about it 18:02:42 ... but so far that wouldn't apply and media query seems appropriate 18:02:49 Rossen_: We have at this point crossed the halfway mark in our time 18:03:00 The simplification link, https://rawgit.com/ayelet-seeman/coga.personalisation/demo/conactUs.html 18:03:14 GameMaker has joined #css 18:03:42 matatk: Problems that we're trying to solve are for many users helpful, and for some users absolutely critical 18:04:02 ... they aren't necessarily the issues that may be of highest priority if you look at content usability guidelines 18:04:08 ... because some of them are very bespoke to content involved 18:04:16 ... but issues we're trying to solve are the ones that are solveable by the machine 18:04:22 ... with just a little bit of metadata at the element level 18:04:31 ... so collection of problems that we're solving, and that's the technique we're using to solve them 18:04:42 Rossen_: when you say solved by the machine, can you define that for us? 18:04:49 matatk: We expect this would be a UA adaptation to the content 18:04:58 ... and by UA what we mean for the forseeable future, a browser extension 18:05:06 ... might be many browser etensions for different groups of users 18:05:08 ... because it varies a lot 18:05:21 user agent or assistive technology (AT)? 18:05:26 ... so really encourage anyone to make an extension to cover any bit of the spec, using any technique appropriate for their user 18:05:35 ... UA would be modifying the DOM on behalf of the user 18:05:41 ... because it's coded for a particular group 18:05:48 ... going off of markup that the author provides 18:05:52 ... to provide hints 18:05:53 q+ 18:06:03 q- 18:06:07 matatk: Let me show this demo 18:06:29 PaulG: Clarify that matatk was saying UA, would be assistive technology. Doesn't ened to be in the AX tree 18:06:33 ... examples of plugins and extensions 18:06:44 ... this can be prototyped with markup, and help make a media query 18:07:04 matatk: Here's an exmaple, created by Lisa Sieman 18:07:16 ... it does have a button in the page, although if this was an extension, it would be in the browser UI 18:07:23 ... this is a clothese retailer with a contact form, many fields 18:07:39 ... navigation across top of page, lots of categories 18:07:48 ... when I press personalize page, get some visual preferences applied 18:07:54 ... slightly fewere categories 18:07:59 .. one fewer form field in the form 18:08:03 ... and then step down to even fewer 18:08:24 ... One of the things in our discussions is, some people say "I might not want this simplification, might want a different simplification" 18:08:36 ... e.g. Sports/Leisure rather than Men/Women 18:08:54 ... MVP doesn't handled, might have less control over how filtered but just does get filtered 18:09:03 ... want to make sure that filtering uses interest in the future 18:09:18 ... some sites have done demographic data, can alter markup based on info they know about the user 18:09:26 ... can do even with this markup 18:09:44 Rossen_: Next steps, so we have closure onthis issue 18:09:58 ... I encourage you to open issues and propose specific candidates for media queries 18:10:12 ... and then you have people here woul would help you reason about how that can progress through CSS 18:10:28 Subtopic: Work on Navigation 18:10:42 matatk: Context, I have a link to minutes from Sapporo 2015 TPAC 18:10:45 https://www.w3.org/2015/10/30-apa-minutes.html 18:11:11 matatk: We saw mention of this in your new charter, work on navigation, wondering if it's a continuation of that conversation or something totally different? 18:11:34 matatk: It seemed to be discussing issues around DOM order vs visual order 18:11:43 ... controlling that through CSS 18:11:51 ... or is it about some new research on spatial navigation 18:12:12 The charter may be referencing https://drafts.csswg.org/css-nav-1/ 18:12:18 proposed new charter https://w3c.github.io/charter-drafts/2022/css-2022.html 18:12:24 astearns: I think charter might be referencing the spatial navigation draft 18:12:54 there is also this paragraph: 18:12:54 "In addition to the above catch-all reference to horizontal review which includes accessibility review, this Working Group will work with the Accessible Platform Architectures Working Group to work on accessible navigation which needs to be addressed coherently across multiple modules, address accessibility issues related to the features of individual modules, and develop new CSS modules to address accessibility use cases where appropriate." 18:12:55 > In addition to the above catch-all reference to horizontal review which includes accessibility review, this Working Group will work with the Accessible Platform Architectures Working Group to work on accessible navigation which needs to be addressed coherently across multiple modules, address accessibility issues related to the features of individual modules, and develop new CSS modules to address accessibility use cases where appropriate. 18:13:19 Rossen_: here's my 30s review of 2015 minutes interpretation 18:13:41 ... my recollection was that we had an extensive conversation which took place right before we introduced a lot of the order properties for Flexbox and Grid 18:13:51 fantasai: must have been after, grid was published as CR 18:14:00 Rossen_: perhaps motivated by that 18:14:05 s/grid/flexbox 18:14:16 ... we have DOM that has an order, applying styles that change the order 18:14:29 ... whether tabbing or using AT to move spatially in the page, order is usually that of the DOM, and visual doesn't match the content 18:14:33 ... that was the basis of that conversation 18:14:50 ... at the time our position was that CSS has a strong recommendation for creating accessible content based on DOM and follows DOM order 18:14:55 ... fantasai has some good posts about this 18:14:58 ... and that was then 18:15:12 ... since then we've done some work on spatial navigation, which was motivated by other media such as screen navigation on TV 18:15:18 ... where you have a directional pad for input 18:15:28 ... and some effort to make that work in general, regardless of the page layout 18:15:48 ... These were the two efforts, and I think they're slightly separate 18:15:52 ... in terms of efforts we were chasin 18:15:55 duga has joined #css 18:16:00 ... but I wouldn't say they're mutually exclusive 18:16:01 q+ 18:16:33 matatk: Things you've been working on, this ED is dated 17th of May last year, is it still active work? 18:16:40 florian: I'm editor of that document 18:16:43 ack florian 18:16:48 ... it got to a reasonable degree of completeness, but it has since stalled 18:16:54 ... there hasn't been significant effort for quite some time 18:17:00 ... I still think it would be a good idea 18:17:06 q+ 18:17:10 ... but given insufficent amount of attention, can't say it's an ongoing path forward atm 18:17:13 q? 18:17:13 ... for now it is stalled 18:17:20 q+ 18:17:23 ack rachelandrew 18:17:32 rachelandrew: Separately to that issue, there was a proposal that I raised 18:17:43 ... which was to create a way for authors to opt into the display order 18:17:51 ... a lot of interest from devs to do that 18:17:59 ... because although I think document order is generally what should be using 18:18:10 ... there are cases where, e.g. when content is rearranged by MQ 18:18:16 ... also have some layout methods that jumble the order 18:18:20 ... such as masonry 18:18:26 ... so a lot of discussion in that issue 18:18:39 ... This is definitely something that needs to be solved 18:18:45 ... authors want to do the right thing 18:18:49 https://github.com/w3c/csswg-drafts/issues/7387 18:18:51 ... we've given them this ability, and saying don't use it,is not great 18:18:56 ... would really like to see this solved in a good 18:18:59 s/good/good way 18:19:00 "stalled" that's a shame. It seems like a great mechanism for authors to accommodate input development and a welcomed replacement for roving tab index keyboard handling JS. 18:19:05 ack matatk 18:19:14 matatk: Thanks for that, Rachel 18:19:28 ... my question is, the work on spatial navigation was motivated by things like smart screens webTV etc 18:19:34 ... and as Rachel said, with new layouts 18:19:43 ... I'm wondering, given that the spatial navigation spec isn't a REC yet 18:19:52 ... what do you see devs doing in the wild to try to provide this, or not provided? 18:20:09 rachelandrew: I think that we're seeing people either not doing things that they would like to do for lots of users because of a11y issues 18:20:14 ... and others who are not caring and do terrible things 18:20:26 ... as you see more visual tools that allow drag-and-drop layouts, easy to do now with grid 18:20:35 ... those completely disconnect the author from the document, and will create situations like this 18:20:42 ... I just feel like this is an issue that we have to solve 18:20:49 ... not say "they should follow document order", I don't think that's realistic 18:21:01 ... at the moment ppl who want to do the right thing do not have good options 18:21:07 ... what's a good user experience? 18:21:11 ... creates problems for navigation 18:21:18 ... so I want to give ppl a good way to do this 18:21:21 ack fantasai 18:21:32 fantasai: I think we need to pursue both of these things 18:21:38 ... they're not exclusive and both are needed 18:21:52 fantasai: going through a linear order is a bit different 18:21:53 ... spatial nav has different requirements from doc order 18:22:04 ... we should accommodate both 18:22:05 q+ Janina 18:22:22 ack Janina 18:22:22 ack j3m 18:22:22 ... sometimes I want to navigate physically down, and sometimes I want to go to the next thing 18:22:26 Janina: Thanks for suggesting both are important, I agree 18:22:43 ... previous and next as we have them in HTML, can be inadequate, and publishing as long has a more elaborate hierarchical model 18:22:50 ... easiest to illustrate if you consider a play 18:22:55 ... multiple acts, and in each act there are scenes 18:23:03 ... you may have to take a lot of steps to get in linear order 18:23:18 ... but if you can adjust your granularity, going to scene 3 in act 4 18:23:24 q+ 18:23:28 ... then you get there far more quickly 18:23:35 q? 18:23:36 ... they've had that in publishing forever, came out of talking books 18:23:51 ... been effective in most cases, works very well 18:24:03 ... would be clever if we could have cookbooks that automatically readjust such as what's top level, what's next level, etc. 18:24:13 ... based on types of cuisine or whatever 18:24:34 fantasai: I agree having a hierarchy would make that easier to manage 18:24:55 q+ 18:25:02 Rossen_: This is handled by many ATs, can move by e.g. headings etc. But only works so long as document has good structure 18:25:04 ack matatk 18:25:19 matatk: If you're not using AT, in the tranditional sense, and just a keyboard-only user 18:25:22 ... and there are many such users 18:25:26 ... then they do have a lot of work 18:25:36 ... keyboard-only users only have tab and scrollling and that's it 18:25:45 ... what Janina said about granularity of linear navigation 18:25:57 ... Remember an app where the developer had made hierarchical, tree-based order 18:26:16 ... initial navigation was across tab panesl, and then can enter into each panel and navigate through there 18:26:24 ... They had to take it out because it was unfamiliar and not documented well 18:26:31 ... it would be great to have a standard conventional mechanism for it 18:26:54 PaulG: Especially in light of what we were talking about before, of ripping out content based on user's request for less of it 18:27:03 ... this presents a difficult challenge for devs to get keyboard navigation correct 18:27:21 ... when predicted display is more complex, effect of both author's content and users preference 18:27:33 ... maybe dangling keyboard handlers with no next, or traps that appear out of nowhere 18:27:34 ack PaulG 18:27:40 ... need to consider chances of authors really messing this up 18:27:51 ... so I think this spec is on its way and would like to get involved ot make sure we have those mechanisms for the future 18:28:01 ... and love to replace every intance of tabindex I have 18:28:36 Subtopic: :role() pseudo-class 18:28:51 scribe- 18:29:05 s/scribe-// 18:29:13 Rossen_: Can someone summarize this issue? 18:29:18 github: https://github.com/w3c/csswg-drafts/issues/3596 18:30:03 matatk: Is this a shortcut for the attribute selector? Seems to be syntactic sugar 18:30:12 fremy: There are some differences, handles roles that are implied as well 18:30:21 Yeah, handling implicit roles is the big point 18:30:22 PaulG: Map to computed role from Chrome's implementation 18:30:34 fremy: could do it yourself with correct attribute, but simplified way 18:30:44 heycam: is computed role only a function of role and tag name, or more things? 18:31:07 matatk: Landmarks, I maintain an extension to navigate, and where they are in teh document determines what they are 18:31:16 ... e.g. if header/footer are scoped to page you have page header/footer 18:31:21 ... but inside an article, not the same landmarks 18:31:35 ... not that simple, so I can understand why if browser does the matching it would be useful 18:31:52 PaulG: What's the status of it? 18:32:20 Rossen_: There's a group discussing this with ARIA 18:32:47 TabAtkins: Several years back we resolved to add this, to expose computed roles to selectors 18:32:59 ... several years after that, I raised this issue saying that I was supposed to draft it 18:33:02 ... still haven't written it 18:33:10 ... if any concerns about it, please file issues/comments 18:33:19 ... otherwise this is just something that needs to be written by me at some point, because I signed up for it 18:33:30 Rossen_: With this, we are out of time 18:33:39 PaulG has left #css 18:33:40 Rossen_: thanks APA for joining us 18:33:50 Janina: Thanks for your hospitality 18:33:59 Rossen_: please do engage on the issues 18:34:04 ... we love to work with ou 18:34:12 ... if you find a liaison, would love to work with them 18:34:14 s/ou/you/ 18:34:23 matatk: File issues is the theme for this week! 18:34:27
18:35:44 topic: break 18:36:14 castastrophe has joined #css 18:40:13 duga has joined #css 18:40:48 karlcow has joined #css 18:41:20 re: :role() selector... I may have proposed it early on but we abandoned the idea when implementation discoveries made it apparent it would be way more effort that the benefit justified 18:41:27 My comment here: https://github.com/w3c/csswg-drafts/issues/3596#issuecomment-460135566 18:41:46 gist: It’s not impossible, but it’s quite a bit more than anyone was willing to commit to. 18:43:58 CSSWG_LogBot has joined #css 18:49:04 ScribeNick: fremy 18:49:08 Rossen_ has joined #css 18:49:21 fantasai: TabAtkins can you project the test case? 18:49:27 TabAtkins: yes 18:49:53 fantasai: this page shows a scrollable box which is an inline-block 18:50:15 Topic: Not clamping baseline position when scrollable overflow gives weird results 18:50:22 github: https://github.com/w3c/csswg-drafts/issues/7660 18:50:42 fantasai: sorry, inline-flex not inline-block 18:50:56 fantasai: the issue is that the text is bigger than the box itself 18:51:11 fantasai: so, the reste of the text is aligned to a line that is beyond the box itself 18:51:18 tante has joined #css 18:51:20 fantasai: which doesn't make much sense 18:51:29 fantasai: the proposal is to clamp the baseline to the border box 18:51:30 present+ 18:51:53 Rossen_: do we also do this in the other direction? 18:52:04 fantasai: good point, we probably should do it in this direction as well 18:52:28 asterns: what is the effect that this would do? 18:52:32 q+ 18:52:38 Rossen_: align "text" to the bottom of the scrollable box 18:52:51 ack florian 18:52:56 dbaron: this would be based based on the initial scroll position? 18:52:58 matatk has joined #css 18:52:58 fantasai: yes 18:53:07 florian: what about overflow: clip? 18:53:14 TabAtkins: probably the same? 18:53:20 iank_: well 18:53:25 q+ 18:53:26 andreubotella_ has joined #css 18:53:44 iank_: probably we don't want that because we resolved that overflow:clip should not have any effect on the layout 18:53:56 q- 18:53:56 iank_: there is already some margin clipping anyway 18:54:03 dbaron: I agree, clip should not apply 18:54:06 +1 to dbaron :) 18:54:07 q+ 18:54:08 emilio: I concur as well 18:54:24 dizhang has joined #css 18:54:25 TabAtkins: currently, the reverse issue exists 18:54:25 s/clip should not apply/overflow:clip should not do anything different because overflow:clip shouldn't influence layout/ 18:54:29 ack emeyer 18:54:46 q+ 18:54:54 rob: am I correct that the baseline can not be above or beyond the scrollable area? 18:54:59 fantasai: yes, correct 18:55:08 rob: then, sure, no objection 18:55:11 s/rob/emeyer/ 18:55:12 s/rob/emeyer/ 18:55:27 q 18:55:31 q- 18:55:45 dholbert: the correct rendering would be that the border would align with the text 18:55:54 dholbert: but we don't want to do that, right? 18:55:55 q+ 18:56:08 Rossen_: yes, otherwise we would need to take a dependency on the font size etc... 18:56:22 Rossen_: so, the proposed resolution is to clamp the baseline 18:56:27 Rossen_: any other comment? 18:56:27 clarifying my question: I was asking if the border-top of the scrollable thing would align with the baseline of the text. And the answer was yes, it would 18:56:38 (in the "reverse scenario") 18:56:40 iank_: can we keep last-baseline separated from this? 18:56:48 s/keep/keep inline-block/ 18:56:52 iank_: I don't want to change the margin behavior yet 18:56:53 ack iank_ 18:57:02 TabAtkins: I'm fine with this for now 18:57:18 Rossen_: any objection? 18:57:39 RESOLVED: baselines of a scrollable container should be clamped to the scrollable area 18:57:52 Topic: How to determine the last baseline of a flex container with different alignment groups. 18:57:59 github: https://github.com/w3c/csswg-drafts/issues/7660 18:58:34 iank_: blink would like to implement last-baseline alignment 18:58:41 iank_: (by blink I mean me) 18:58:54 iank_: but how do we find out what is the last baseline is a question 18:59:13 iank_: currently, anything that uses a baseline alignment should be counted in 18:59:20 iank_: if none are, you fallback 18:59:28 iank_: there are groups however 18:59:43 iank_: some might be first-baseline aligned, some might be last-baseline aglined, etc... 18:59:53 iank_: how do you choose? it's the question 19:00:04 iank_: maybe TabAtkins can elaborate 19:00:19 TabAtkins: I'm projecting the example on the screen 19:00:43 fantasai: if we consider a flex container with multiple elements with baseline alignment 19:00:51 fantasai: we want the baseline of these elements 19:01:06 fantasai: but if you have last-baseline alignment only 19:01:15 q? 19:01:18 fantasai: should that count as the first baseline of that group? 19:01:22 fantasai: or should we bail out? 19:01:34 fantasai: and if you have both types of alignment in the first row 19:01:42 fantasai: these might not align with each other 19:01:49 fantasai: how do you pick in that case? 19:02:01 dbaron: I would like to propose something 19:02:16 FWIW firefox's rendering changes when I inspect in devtools, so we've clearly got a bug here :) 19:02:23 dbaron: maybe the solution is that if you look for a first baseline, first-baseline-aligned things should be used first 19:02:30 dbaron: and vice versa for last baseline 19:02:36 iank_: yes, I think most people agree with that 19:02:44 ack dbaron 19:02:49 iank_: an issue is what you do next 19:03:16 fantasai: if a page has a navigation bar 19:03:22 fantasai: and it's last-baseline aligned 19:03:27 q+ 19:03:33 fantasai: if most items have one line, but one has two 19:03:42 fantasai: if I align something with this, what behavior do we want? 19:03:59 fantasai: we can either use the last-baseline that every item aligns to 19:04:11 fantasai: or the first baseline of each of these items 19:04:23 fantasai: I would posit that the shared baseline is a better guess for what the author might want 19:04:38 iank_: to repeat that 19:04:46 iank_: if we are trying to find the last baseline 19:04:54 I think what fantasai said seems reasonable as long as when there are *two* shared baselines, we pick the one being exported. 19:04:55 Note: discussion not recorded to issue 7387 yet.. 19:04:57 iank_: we would pick the first baseline as the last baseline if that's all we got 19:05:13 iank_: and if we don't even have that, then we fallback to the last baseline of the bottom item 19:05:14 q+ 19:05:19 fantasai: yes 19:05:22 iank_: reasonable 19:05:34 heycam: would not exporting a baseline be reasonaoble? 19:05:43 fantasai: we will always do that 19:05:44 ack heycam 19:05:55 fantasai: but right now we synthetize one 19:05:59 fantasai: that is rarely desirable 19:06:03 heycam: isn't that enough? 19:06:17 fantasai: it's better to use the other baseline, for the author 19:06:29 iank_: the final fallback could be the first or last item 19:06:41 iank_: I agree that the middle step is ok 19:06:57 dholbert: I'm not sure we don't always the fallback 19:07:13 github: https://github.com/w3c/csswg-drafts/issues/7641 19:07:14 dholbert: I'm worried that we could get a weird telescope effect 19:07:25 s/telescope/stair-step/ 19:07:26 dholbert: things will be lined up 19:07:32 dholbert: but in opposite directions 19:07:38 dholbert: which might not look good, actually 19:07:46 dholbert: the synthetic is at least "logical" 19:08:02 fantasai: iank_ proposed to use the lower last baseline and the hightest first baseline etc... 19:08:35 fantasai: but if you have five items that are 1, 2 or 3 lines tall; whether or not your item is at the top or the bottom, it won't look very reasonaoble 19:08:59 fantasai: if you align with the shared baseline, the alignment will look reasonable I think 19:09:19 dholbert: but if you are looking for a first baseline and there is none 19:09:19 q? 19:09:42 dholbert: I don't understand why the special handling is gonna make things substantially better 19:09:55 fantasai: if you are aligning one line of text, it's more sensible 19:10:00 ack dbaron 19:10:02 ack dholbert 19:10:18 if you're asking for baseline alignment, you want to align to text, not to fall back to a box edge, if possible 19:10:26 iank_: my comment is that if you are trying to find the last baseline, you could get the lowest in the first row 19:10:31 iank_: this is kinda how tables work 19:10:41 iank_: but the two solutions I most like 19:10:57 iank_: is either use the first baseline item then use the fallback 19:11:08 iank_: or fantasai's solution where there is a middle step 19:11:16 iank_: both solutions look reasonable 19:11:20 Rossen_: and if you had to pick? 19:11:26 iank_: no strong opinion 19:11:42 iank_: the first one is a bit simpler to implement because its has two levels only 19:12:15 fantasai: if we are looking into multi-rows grid to align 19:12:38 fantasai: if you don't have the middle step, you will get worse results 19:12:55 q+ 19:12:59 fantasai: because fewer things will align with each other 19:13:05 q+ 19:13:07 ack florian 19:13:12 florian: flex items contain text 19:13:25 florian: so it makes sense for them to have both 19:13:35 florian: but the container only has one line 19:13:41 no, flex containers can have last-baseline as well as first-baseline aligned items 19:13:43 and can export both 19:13:45 (I think) 19:13:55 florian: so I can't think of of any other relevant baseline is than the shared baseline 19:14:14 iank_: you can look into it in two ways 19:14:29 iank_: the question is that the fallback approach 19:14:47 fantasai: in the issue, iank_ suggested also to look for the lowest or highest across all items 19:14:55 fantasai: this would give even better results 19:15:06 iank_: yes, this is another option I would accept 19:15:13 iank_: I'm just worried a bit about the compat risk 19:15:19 ack dholbert 19:15:52 dholbert: when finding the first/last baseline, would what you described be the canonical algorithm? 19:15:54 iank_: yes 19:16:05 dholbert: then I would worry about compat too, I think 19:16:37 dholbert: for the grid case, I agree that in most cases what fantasai proposes makes more sense 19:16:58 dholbert: but when you have one flexbox with one item, which is a common case, which would be confusing I think 19:17:18 dholbert: we could find the baseline of that first item 19:17:30 iank_: it's an edge case 19:17:39 iank_: you can get the correct behavior by doing nothing 19:17:48 iank_: so, why would you do it if that's not what you want? 19:17:54 iank_: I'm thus not very concerned 19:17:57 ack dbaron 19:18:33 dbaron: after listening to fantasai's explanation, I'm reasonably convinced that we want the fallback levels 19:18:47 dbaron: because some things might need to be changed later in the design 19:19:08 dbaron: otherwise, if you change things in one place, you have to change consistently, which might be difficult 19:19:25 dbaron: the middle step enables to change only locally, and get things to work anyway 19:19:39 iank_: seems like most people are aligning with fantasai's solution 19:19:45 iank_: anyone would object to that? 19:20:02 Rossen_: sounds like you will have to do the more complex implementation :) 19:20:11 iank_: yes... 19:20:20 Rossen_: ok, any objection? 19:21:07 fantasai: proposed resolution: when taking the baseline of a row of item, we check a shared first baseline, then a shared last baseline, then the first baseline of the first item 19:21:12 +1 19:21:21 fantasai: (everywhere we can get away with it without compat issues) 19:21:28 antonp has joined #css 19:22:00 s/taking the baseline of a row of item/taking the first baseline of a row of items/ 19:22:01 iank_: the only additional warning is that you can have a first-baseline aligned thing in the first-baseline group, but that seems fine 19:22:10 (and vice-versa for the last baseline) 19:22:23 Rossen_: ok, no objection, 19:22:36 RESOLVED: when taking the baseline of a row of item, we check a shared first baseline, then a shared last baseline, then the first baseline of the first item 19:22:49 Topic: How is the last-baseline of a multi-col determined? 19:22:56 RESOLVED: (and vice-versa for the last baseline) 19:23:01 matatk has joined #css 19:23:08 github: https://github.com/w3c/csswg-drafts/issues/7639 19:23:39 iank_: for multicolumns elements, we currently take the baseline of the first column 19:23:52 iank_: and implementations don't look for a last baseline 19:23:58 iank_: maybe we should? 19:24:09 iank_: but it's still an option not to, like we do today 19:24:17 q+ 19:24:19 iank_: we can take the last baseline of the first column 19:24:24 iank_: or of the last column 19:24:31 iank_: or the lowest of all the columns 19:24:52 dbaron: exporting the baseline of a multicolumn sounds scary 19:25:00 dbaron: especially if you have balancing going on 19:25:06 s/the baseline/the last baseline/ 19:25:17 iank_: if you use the last column and you balance, it will often work 19:25:31 iank_: but without balancing, you can end up somewhere random in the height 19:25:34 q? 19:25:38 fantasai: that seems the worst indeed 19:25:45 fantasai: I think the best would be the max 19:25:59 TabAtkins: fantasai just said what I was about to say 19:26:16 s/the max/the max, and second best would be the last line of the first column/ 19:26:26 iank_: the only caveat is that we probably don't want to include spanned items 19:26:30 fantasai: why not? 19:26:41 fantasai: if sounds like an rare case, but why not? 19:26:49 iank_: (nodding) 19:27:04 fantasai: I think checking all columns is better 19:27:07 +1 to checking all columns 19:27:15 fantasai: in case you have a large image that doesn't fit at the bottom of the first column 19:27:19 iank_: I'm fine with that 19:27:43 iank_: we have some compat constraints for inline-block 19:27:48 iank_: but here it's ok 19:28:05 fantasai: proposed resolution is to use the lowest last baseline of all columns 19:28:09 Rossen_: any objection? 19:28:38 RESOLVED: for multicolumns, use the lowest last baseline of all columns as its last baseline 19:28:40 ScribeNick: 19:28:43 ScribeNick: TabAtkins 19:28:50 Topic: last baseline of tables 19:28:58 github: https://github.com/w3c/csswg-drafts/issues/7655 19:29:22 iank_: Tables work by taking the first baseline from the first row in the larger table 19:29:30 iank_: Importantly, we skip captions, this is intentional 19:29:37 iank_: So how do we determine last baseline? 19:29:46 iank_: First relatively obvious bit is we probably want the last row 19:29:57 iank_: Given the reoslution we just had for flex and grid, we can probably do something similar 19:30:31 iank_: So if you've got a lot of baseline-aligned items, we'll take the first-baseline of those items and use it as the table's last baseline; toherwise we'll synthesize 19:30:54 fantasai: Alignment expands baseline alignment for tables, says align-content works on cells; "normal" looks at vertical-align, but you can use first/last baseline normally 19:30:59 q+ 19:31:03 fantasai: So probably just want to take literally the grid behavior and apply it here 19:31:06 iank_: Yeah, fine with that 19:31:13 iank_: Not implementing it yet, but seems fine 19:31:19 iank_: Important is to not consider captions 19:31:25 fantasai: agreed 19:31:33 q+ 19:31:38 iank_: (I'll show Firefox folks some cases for why caption should be ignored later) 19:31:38 ack heycam 19:31:44 heycam: How do spanning cells impact this? 19:31:55 iank_: it gets a little complex 19:32:21 iank_: this wouldn't apply until impls support align-content; if something is spanning multiple rows, its first baseline currently only contributes to its first spanned row 19:32:49 iank_: And last-baseline, you can only get spanned cells affecting the last baseline if you support align-content:last-baseline 19:33:11 fantasai: So a spanned cell only affects first baseline alignment in its first row, and last baseline in its last row, and that's it 19:33:19 ack fremy 19:33:22 fantasai: so it doesn't affect first-baseline alignmetn in its last row, etc 19:33:33 fremy: When you synthesize, do you include the table border? 19:33:55 iank_: TAbles always have a valid baseline - it's complicated - if there's a tbody, you ahve a baseline bc you synthesize it using the content edge of the first row 19:34:16 iank_: I think if you have captions but no body there's no exported baseline, so you'd synthesize from the table border 19:34:22 iank_: Need to do some investigation on our behavior 19:35:00 fantasai: proposed resolution: finding first/last baseline of a table cell works same as in grid 19:35:16 iank_: And last baseline of a table is taken from teh corret baseline-sharing group in the alst table row 19:35:21 Rossen_: objections? 19:35:37 RESOLVED: Table baselines match grid, per details above. 19:35:39 RESOLVED: Rowspanning cells particpate only in first baseline alignment of their first row, and last baseline alignment in the last row 19:35:46 fremy: Should I modify Tables? 19:35:55 fantasai: We might be able to do it generically in Align. 19:36:05 fantasai: If we can't we'll ping you. 19:36:08 Topic: end 19:36:15
19:36:37 Topic: lunch break 19:38:00 projector has joined #css 19:38:30 leaverou has joined #css 19:39:00 Rossen has joined #css 19:39:31 shans has joined #css 19:40:01 sylvaing has joined #css 19:45:05 jacobcrypusa has joined #css 19:49:59 nigel has joined #css 19:51:53 matatk has joined #css 19:54:20 nigel has joined #css 19:56:08 nigel has joined #css 20:00:18 nigel has joined #css 20:03:59 karlcow has joined #css 20:12:48 eeeps has joined #css 20:13:10 matatk has joined #css 20:29:45 ydaniv has joined #css 20:30:36 nigel has joined #css 20:33:02 andreubotella has joined #css 20:33:25 duga has joined #css 20:33:28 tantek has joined #css 20:33:53 fremy has joined #css 20:34:08 dizhang has joined #css 20:34:16 Rossen_ has joined #css 20:34:16 apologies, hamds full of sammich 20:34:24 topic: [css-align-3] Baselines need to be defined on fieldsets. 20:34:35 github: https://github.com/w3c/csswg-drafts/issues/7656 20:34:44 ScribeNick: emilio 20:35:20 iank_: fieldsets need their baseline defined 20:35:29 ... they're special, have a on the border area 20:35:38 ... and their contents are wrap in a box with arbitrary display type 20:35:40 https://www.software.hixie.ch/utilities/js/live-dom-viewer/?saved=10714 20:35:52 iank_: implementations do wild things 20:36:03 ... dgrogan has screenshots of what browsers do today 20:36:11 ... my preference is to ignore the legend 20:36:17 ... that's Chromium's behavior 20:36:19 dlibby has joined #css 20:36:24 fantasai: I'd like to argue for Safari's behavior 20:36:33 ... first baseline from legend, last from content 20:36:38 Rossen_: why is that more sensible? 20:36:47 fantasai: legend is the first bit of text that you see 20:36:54 ... seems reasonable to align to it 20:36:58 ... that should def. work 20:37:13 +1 for aligning fieldsets with each other based on the legend 20:37:18 ... not sure what the last baseline to be, but taking the last baseline of the content of the fieldset makes sense to me 20:37:26 iank_: I think I disagree, is like table captions 20:37:37 ... they have smaller font-size, they're not the main content of the fieldset 20:37:48 ... first baseline should be actual content, that makes more sense to me 20:37:59 fantasai: would be great if web designers would weigh in on this 20:38:26 Rossen_: one potential use case might be aligning multiple fieldsets 20:38:42 iank_: aligning to non-fieldset content is more common I think 20:38:53 dbaron: I think I lean towards agreeing with iank_ 20:39:00 ack dbaron 20:39:02 ... not that uncommon for fieldsets to lack a 20:39:17 +1 Ian and David 20:39:18 ... if we wanted to align to legend we'd need to define what happens when there's no legend 20:39:21 +1 20:39:25 +1 20:39:26 q+ 20:39:33 ... my sense is that it's common not to have one 20:39:43 nigel has joined #css 20:39:45 ack heycam 20:39:46 iank_: if you're aligning fieldsets with and without legends it'd be weird 20:39:57 heycam: agree with iank_ as well, legend is ancillary content like captions 20:40:07 ... fieldset legend could also have multiple lines of text as well 20:40:07 q+ 20:40:15 ack emeyer 20:40:22 emeyer: I'm looking at live dom viewer on irc 20:40:34 ... I accept the argument that aligning to the legend is a bit dangerous 20:40:43 ... I have the feeling that many fieldsets don't have legend 20:41:01 ... but I do see situations for all three kinds of alignment. legend/first/last content 20:41:13 ... if I had to pick one I'd choose first line of contents 20:41:23 ... but I see use cases for the others 20:41:43 ... there's cases where I might want to align to others 20:41:48 ... I think both patterns would be common 20:42:11 fantasai: when you want first line to align, is there case where the legends don't align? 20:42:13 q+ 20:42:30 q+ 20:42:31 emeyer: I can't think of a reason, I'd want the legends to align with each other 20:42:32 nigel has joined #css 20:42:45 ... sometimes I want text outside to align with the legend 20:43:10 iank_: if you want to align legends using top-alignment would work unless there's non-fieldset content 20:43:38 emeyer: I probably would want the text outside to align with the first line of content rather than the legend 20:43:51 iank_: we could also add a switch to allow you to align to a legend if that use case comes up 20:44:04 fantasai: there's an issue to allow choosing baseline alignment box 20:44:20 https://github.com/w3c/csswg-drafts/issues/1339 20:44:27 emilio: I was going to say something related what Ian said. we could add a switch but I'd also like to ignore the legend 20:44:32 ack emilio 20:44:49 ... if the use case for aligning to a legend comes up often, where you're aligning text outside the fieldset with the legend of the fieldset, which seems odd, we could look to allow that 20:44:52 ... but seems farfetched 20:44:56 ... for most cases top alignment should do 20:45:15 ack zcorpan 20:45:23 zcorpan: we discussed whether there's a case where legends wouldn't be align 20:45:39 ... if you have a fieldset with one line of text and another when the legend is 2+ lines of text 20:45:45 ... those wouldn't be necessarily align 20:45:49 ... depending on what we decide 20:46:00 ... maybe I misunderstood 20:46:07 no, I had the same idea 20:46:19 iank_: that's a similar problem if you try to align a fieldset with a legend and one without 20:46:45 Rossen_: it sounds the obvious use case is that the first baseline of content needs to be available 20:46:56 ... we need to resolve to have first-line baseline based on the content 20:47:11 ... be available. The second question is whether we need to make the legend baseline available 20:47:38 emilio: I would propose to try resolving the default be the baseline of the content 20:47:52 ... if there are use cases that can't be solved without the baseline of the legend, work on what fantasai was talking about, choosing the baseline box 20:48:14 Rossen_: seems to agree with the majority of the +1s and arguments made 20:48:33 nigel_ has joined #css 20:48:54 +1 20:49:12 Rossen_: fantasai, objections? 20:49:18 fantasai: defer to emeyer and jensimmons 20:49:29 s/fantasai, // 20:50:10 emeyer: the proposed resolution is to default to first or last baseline of the content? 20:50:20 emilio: both baselines first and last would be baseline of the content box 20:50:56 emeyer: feels probably correct, I'll take al look at various cases to confirm it's not a bad idea, but seems like the best resolution 20:51:13 RESOLVED: default first and last baselines to be the fieldset content's 20:52:02 Topic: CSSStyleSheet.layer 20:52:26 github:https://github.com/w3c/csswg-drafts/issues/7002 20:52:41 miriam: we resolved on the main question, a CSStyleSheet.layer 20:52:53 ... another question came up that fantasai and me weren't sure how to answer 20:53:03 ... can the same sheet be imported in different layers 20:53:26 ... is it guaranteed that different imports end up with different sheets or do we need to track all the different names? 20:53:27 q? 20:53:27 q+ 20:53:39 ack emilio 20:53:42 emilio: the CSSOM guarantees each @import rule should be a different style sheet 20:53:44 emilio: The CSSOM guarantees that each @import rule should be a different style sheet 20:53:45 ... so I think we're good 20:54:37 RESOLVED: No change to the previous resolution 20:55:31 emilio: Xiaocheng is talking about CSS Imports, not @import 20:55:49 ... I don't know how CSS Modules behave, if they always create the same style sheet object, or multiple 20:55:53 ... I was talking about @import rules 20:56:16 ... presumably if Xiaocheng is asking, they must only create a single object 20:57:48 not sure if https://github.com/WICG/webcomponents/blob/gh-pages/proposals/css-modules-v1-explainer.md is still accurate 20:57:54 chrishtr: we should continue to research then get back to the issue 20:58:22 dbaron: I have some memory of a discussion in a TAG review about whethehr they create separate objects, can't remember the conclusion 20:58:42 https://github.com/w3ctag/design-reviews/issues/405 20:59:08 Rossen_: let's re-discuss when Xiaocheng is back 20:59:18 Topic: querySelector and scoping 20:59:35 github: https://github.com/w3c/csswg-drafts/issues/7709 21:00:00 miriam: in the scope spec we tried to provide the at rule and also tried to provide that in selectors 21:00:21 ... the reason was to use querySelector to return scoped results 21:00:30 ... that ended up being difficult and raised many different issues 21:00:43 ... syntax is easy to solve in @scope and harder in selector notations 21:00:52 (I found https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-css-module-script ) 21:01:11 ... is it worth to pursue that or can we add a second argument to qSA 21:01:15 q+ 21:01:17 ... and get rid of the selector notation 21:01:25 ack TabAtkins 21:01:59 TabAtkins: I think we should switch the second arg to an options bag 21:02:03 querySelector(".foo", {upper: Element, lower: Element} ) 21:02:21 jbroman has joined #css 21:02:26 q+ 21:02:42 emilio: I assume the way this would be implemented would be basically a post-processing of sorts 21:02:49 q+ 21:02:56 ... you'd first match the selector, then if it matches, you check the scope. do we really need a querySelector API for that? 21:03:15 ... it's like a filter on the querySelectorAll results 21:03:22 miriam: I'm not sure I understand your proposal Tab 21:03:46 emilio: I understand the proposal, but do we need to build this into qSA? can't you process the qSA results? 21:03:56 miriam: if I'm reading Tab's proposal right, you're looking for a selector within a scope 21:04:01 ... I'm trying to return a scoped fragment of tree 21:04:07 ... which is a bit different from scoped selector 21:04:14 ... so when you grab an element you get its descendants 21:04:25 ... potentially with cutting off some lower boundaries 21:04:43 TabAtkins: that's what you'd get if your selector was a star 21:04:49 ack emilio 21:04:51 ack miriam 21:04:59 miriam: no, we're trying to return not a selector within a scope, but the scope 21:05:17 TabAtkins: that sounds like a completely different thing 21:05:31 miriam: doesn't qSA return the tree of elements? 21:05:41 fantasai: no, only the list of matched elements 21:06:04 fremy: are you trying to get something like get all the images inside a div but not inside a p 21:07:08 TabAtkins: you can't do it with selectors reliably , you need upper and lower boundaries 21:07:27 fremy: yeah but your proposal takes an element, it should ideally take selectors right? 21:07:32 TabAtkins: it should take a list of elements 21:07:48 fantasai: Should accept a selector representing such elements 21:07:53 emilio: I'm moderately sure qSA doesn't take a second argument 21:07:55 TabAtkins: yes it does 21:08:07 ... but it's the this value 21:08:15 q 21:08:58 TabAtkins: regardless of design discussions, question is is it ok to drop the scoping from selectors because we'll address the use case in some way by modifying qS? 21:09:00 q+ 21:09:09 emilio: I think we should drop the selector syntax 21:09:20 ... I'm pretty convinced you can achieve the scoping stuff with script right now 21:09:25 ... even if it needs multiple qS calls 21:09:36 ack emilio 21:09:41 ... but if we need to add a more convenient way to do that, we can do that 21:09:45 Doing it in small amounts of code, correctly, is non-trivial. 21:09:49 ... but I don't think we should force scoping into selectors just for this use case 21:09:59 fremy: the only thing would be performance 21:10:03 Need to make sure the forbidden ancestor is between the element and the root (upper boundary); if it's *above* the root it doesn't matter. 21:10:19 ... you can filter in JS but you can create wrappers for lots of nodes 21:10:23 emilio: if you use closest, you don't create [...] 21:10:40 TabAtkins: you can't use closest, it's non-trivial to do in script 21:10:54 emilio: but I'm sure we can figure out a convenient way to do this if we need it 21:11:55 https://dom.spec.whatwg.org/#dom-parentnode-queryselector 21:11:55 TabAtkins: proposal is removing scoping from selectors, opening an issue in DOM for adding scoping API to qSA 21:12:16 RESOLVED: Remove scoping from selectors 21:12:58 Topic: scoping rules from @import 21:13:02 Github: https://github.com/w3c/csswg-drafts/issues/7348 21:13:23 miriam: similar to layer() in @import 21:13:38 ... and upcoming layer in 21:13:51 ... there's a proposal to add scoping to a sheet when it's scoped 21:13:59 ... proposal is to put the scoping condition in @scope 21:14:05 ... and put it inside of a function 21:14:19 ... so @import "url" scope( to ); 21:14:42 ... we might want the same for html 21:14:58 ... if you're only using scope you need double parens 21:15:06 ... which is a bit ackward 21:16:04 ... but proposal is to add the scope() function and maybe a shorthand for that awkward case 21:16:15 q+ 21:16:28 emilio: this feels a bit more similar to @container or such, than @layer 21:16:43 ... I feel it's a bit awkward. when would you want to scope a whole style sheet? 21:16:57 ack emilio 21:16:57 miriam: this would be particularly useful for systems that are currently modular / separate style sheets per component 21:17:07 ... we could take those separate sheets, apply a scope as importing them 21:17:10 emilio: could use shadow DOM 21:17:17 miriam: other way is to wrap it in a file 21:17:23 emilio: seems like a weird thing to have a shorthand for 21:17:31 ... but if you say it's useful 21:18:53 emilio: it feels weird in the sense it's depends on the DOM you're styling, rather than layer or media, where it's more about the style sheet itself and the environment 21:19:20 miriam: I'll say people are going to do this. they have other methods to do it. I don't feel strongly we need this one, but it will keep coming up 21:19:24 ... do we want to provide it as a shorthand? 21:19:27 emilio: should we encourage it? 21:19:41 ... if you want this kind of scoping for your whole style sheet, you may just want to use shadow DOM and drop the style sheet there 21:19:49 miriam: scope is fairly different from shadow DOM 21:20:04 ... you could make a fair argument that if the style sheet is meant to be scoped then it should be inside the style sheet 21:20:24 ydaniv: it might not be your style sheet 21:21:00 emilio: I get wanting to use teh style sheet only when I'm printing, or to put it in this layer, but I want to scope this whole style sheet, since it depends on what selectors you're scoping it to 21:21:05 chrishtr: seems like it's the same as @scope 21:21:08 ... it's just for a whole file 21:21:11 ... that could be convenient 21:21:32 ... if we accept the general usefulness of scoping, which I think it is, we should provide primitives to make that easier 21:21:40 ... this seems like a natural extension to that 21:21:45 emilio: you could make the same argument for container 21:22:05 emilio: to me, @scope and @container are more similar than @scope and @media 21:22:09 ydaniv: it's more like @layer 21:22:11 emilio: do you think so? 21:22:16 ... @layer doesn't change whether something matches or not 21:22:28 chrishtr: it's scoping to different subtrees 21:22:31 emilio: not objecting 21:23:01 RESOLVED: add scope() to @import syntax 21:23:50 topic: Proximity of siblings 21:23:53 github: https://github.com/w3c/csswg-drafts/issues/7233 21:24:04 miriam: original request framed it as sibling scopes 21:24:31 ... but when we dug they cared about proximity of siblings in the cascade 21:24:52 ... we have this for descendants where proximity affects the weight in the cascade 21:25:02 ... this wanted to account for siblings 21:25:18 ... seems we could do something like that with different syntax 21:26:11 nigel has joined #css 21:26:12 TabAtkins: I don't think how we'd account for this in `@scope` 21:26:16 h1 ~~ p or h1 ++ p 21:26:25 s/think/know 21:26:36 TabAtkins: but the use case is great and the combinator syntax is great 21:26:44 ... doesn't matter which syntax 21:27:03 zcorpan: proposal are ~~ or ++ 21:27:06 q+ 21:27:38 +1 for snakes 21:27:42 +1 for snakes 21:27:45 TabAtkins: I don't care about which one but we should make it work in @scope 21:27:55 emilio: I argue for snakes 21:27:55 since ++ already means something in other languages :) 21:27:56 ack emilio 21:28:02 +1 tantek 21:28:06 emilio: snake already involves all the siblings 21:28:09 ... while plus doesn't 21:28:10 s/+1 tantek/tantek++/ 21:28:15 ... so it feels more logical 21:28:34 mushroom ~~ muchroom 21:29:02 nigel_ has joined #css 21:30:02 TabAtkins: Currently child one is based on child rather than descendant combo, so would be more consistent with + 21:30:23 fantasai: I agree with tab that ++ is more analogous but I also prefer the snakes 21:30:58 🐍 21:31:23 Rossen_: Imagine you're on a plane... 21:31:45 Hm, thinking using `to sibling` keyword in @scope would work 21:32:30 miriam: proposal is adding ~~ as a sibling combinator that prefers closer siblings 21:32:43 emilio: after Tab's argument I prefer the pluses, but I don't mind either way 21:33:06 RESOLVED: ~~ is a sibling combinator that prefers closer siblings 21:33:09 karlcow has joined #css 21:33:26 topic: :stylesheet 21:33:37 github: https://github.com/w3c/csswg-drafts/issues/7349 21:34:23 miriam: this is about stylesheets in the dom and scoping 21:34:30 eeeps has joined #css 21:34:42 ... idea is to use `:stylesheet` / `:stylesheet-parent` to select stuff inside this scope 21:34:52 ... that would allow you to scope the stylesheet 21:35:02 ... most usecases prefer the stylesheet parent 21:35:18 ... I don't have strong use cases for any 21:35:19 CSSWG_LogBot has joined #css 21:35:20 huge +1 21:35:31 fantasai: is there any use case other than implementing