15:57:41 RRSAgent has joined #css 15:57:46 logging to https://www.w3.org/2025/05/14-css-irc 15:57:46 RRSAgent, make logs Public 15:57:47 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 15:58:23 moonira has joined #css 15:58:26 PaulG has joined #css 15:58:34 present+ 15:59:26 JoshT has joined #css 15:59:29 emeyer has joined #css 15:59:53 present+ 16:00:03 kbabbitt has joined #css 16:00:10 present+ 16:00:23 oriol has joined #css 16:00:26 present+ 16:00:30 ydaniv has joined #css 16:00:46 present+ 16:00:56 kizu has joined #css 16:00:59 present+ 16:01:03 jbreiland has joined #css 16:01:06 andreubotella has joined #css 16:01:06 present+ 16:01:11 present+ 16:01:12 present+ 16:01:41 schenney has joined #css 16:01:51 flackr has joined #css 16:01:52 present+ 16:01:55 bkardell has joined #css 16:01:55 present+ 16:02:02 present+ 16:02:06 masonf has joined #css 16:02:06 ScribeNick: emilio 16:02:46 smfr has joined #css 16:03:03 jfkthame has joined #css 16:03:35 jensimmons has joined #css 16:03:40 present+ 16:03:41 present+ 16:03:45 present+ 16:03:53 github-bot: take up https://github.com/w3c/csswg-drafts/issues/11195 16:03:53 Topic: [css-position-3] Absolute positioning - Is the new inset & auto-size behaviour web-compatible? 16:03:53 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11195. 16:03:55 present+ 16:04:09 oriol: this was discussed a few weeks ago and I couldn't attend 16:04:18 ... not sure if the consequences of the resolution were fully understood 16:04:44 present 16:04:47 present+ 16:04:52 ... the implication is that you can have an abspos with auto margins that if it has normal alignment it'd stretch, but if you change self-alignment to be stretch, then it will stop stretching 16:05:02 ... I think that doesn't really make sense and would just cause confusion 16:05:27 ... in flex and grid auto margins don't stretch even if they have stretch alignment 16:05:35 ... but this happens both for stretch and normal alignment 16:05:42 gfaujdar has joined #css 16:05:43 ... so I think it's better to have abspos be consistent 16:05:53 present+ 16:06:02 ... and avoid having the align-self: stretch align with flex / grid 16:06:13 ... also the argument for making consistent with flex/grid feels weak 16:06:16 futhark has joined #css 16:06:24 ... in block layout auto margins don't prevent block level items 16:06:27 ... from stretching 16:06:37 ... so I'd like to change the previous resolution 16:06:41 present+ 16:06:49 ... so that if they stretch with normal alignment they also stretch with stretch alignment 16:07:04 fantasai: whichever way we go we are going to introduce inconsistencies 16:07:35 ... in terms of alignment I think being consistent with flex/grid is more important because that's what authors are used to 16:07:49 ... in block layout only blink has implemented and it's very recent so we can probably change it 16:08:16 ... for normal we're stuck with css2, but for the other keywords it'd introduce inconsistencies 16:08:35 ... are you proposing that auto margins are stronger than centering in flex/grid but not abspos? That seems like a bad idea 16:09:37 ... I think maybe changing stretch only is better than the current situation, I admit it's quite weird that stretch is less stretchy than normal 16:09:52 s/I think// 16:10:06 oriol: not sure the right way to look at this is props winning over other 16:10:22 ... the way i see it is both margin and alignment have some effect simultaneously 16:10:31 ... e.g. both may affect the auto size to be fit-content 16:10:49 ... also auto-margins work by changing the margin box and alignment works in terms of that box 16:11:08 ... so if you have auto margins that fills the whole container alignment won't do anything, but it's not like it is disabled 16:11:15 ... it's more like it doesn't matter which value you use 16:11:37 ... whether we decide that self-alignment forces auto size to be fit-content or auto margins do that I think it's independent decisions 16:11:44 ... and it's not like some values win and they don't 16:11:50 s/they/don't 16:11:53 s/they/some 16:12:02 ... e.g. even tho in flex and grid auto margins prevent stretching 16:12:14 ... then center alignment could prevent stretching even with a 0 margin 16:12:25 ... so we could say that center alignment is "winning" over the 0 margin 16:12:33 ... so what wins and loses can be subjective 16:12:51 ... I prefer seeing it as different things applying simultaneously 16:13:20 fantasai: so iiuc, if you have auto margins and stretch, the first thing you do is stretch 16:13:33 ... then auto margins end up having no effect (unless max-size is involved) 16:13:46 oriol: exactly 16:14:06 ... so in this case for abspos neither auto margins nor stretch alignment force fit-content size (so it can stretch) 16:14:28 ... typically alignments won't matter because auto margins will resolve to 0 and then alignment would do nothing 16:14:40 ... but if you have a max-size then you can align stuff using the alignment properties 16:15:00 fantasai: I think that makes sense. There's a weird clause about negative and auto in this case, need to go back and check, but should be fine 16:15:24 astearns: so prev resolution is no change to the spec, what should the spec say 16:15:58 oriol: a way to word could be "change stretch alignment case to allow the size to stretch when the normal alignment case allows stretching" 16:16:08 astearns: makes sense, wdyt fantasai? 16:16:11 fantasai: yeah 16:16:12 +1 16:16:26 RESOLVED: change stretch alignment case to allow the size to stretch when the normal alignment case allows stretching 16:16:31 present+ 16:16:50 github-bot: take up https://github.com/w3c/csswg-drafts/issues/11382 16:16:50 Topic: [cssom][css-grid] Do shorthands serialize with the resolved value of their longhands? 16:16:50 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11382. 16:17:13 oriol: Some longhands have special getComputedStyle behavior, so you get the resolved rather than computed value 16:17:25 ... it's not clear what happens when you're serializing a shorthand that involves these 16:17:31 ... in the issue I have various examples 16:18:01 ... e.g. margin: auto and you serialize margin-top you might get zero, but if you try to serialize the margin longhand itself you get auto in firefox but 0 in blink/webkit 16:18:07 ... it's particularly weird in grid properties 16:18:14 ... because the implicit tracks and repeat() expansion 16:18:15 q+ 16:18:25 ... we have cases where all browsers are different 16:18:25 ack fantasai 16:18:31 ... I think I prefer what webkit does 16:18:50 ... which is you serialize the shorthand as if the computed value of each longhand was set to each special resolved value 16:18:53 scribe+ 16:18:56 ... I think that's the most consistent 16:19:03 emilio: I agree. 16:19:31 emilio: FWIW, I consider the Firefox behavior to be a bug. Haven't gotten around to fixing, because the getters are in C++ and ... 16:19:48 emilio: What WebKit is doing, resolving each individual longhand, and then serializing shorthand with that is the right thing to do. 16:19:57 emilio: This is what Firefox does for all things that don't involve layout 16:20:35 astearns: web compat concerns or other opinions? 16:20:49 oriol: If webkit isn't having compat issues this is probably fine? 16:20:53 +1, I *suspect* this is reasonably safe 16:21:04 and we can always add exceptions as necessary 16:21:11 +1 TabAtkins 16:22:27 PROPOSED: Shorthands serialize using the resolved value of the individual longhands 16:22:32 RESOLVED: Shorthands serialize using the resolved value of the individual longhands 16:22:48 github-bot: take up https://github.com/w3c/csswg-drafts/issues/5813 16:22:48 Topic: [css-grid] grid-gap is still taking up space when an element defined in grid-template-area is not on the page. 16:22:48 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/5813. 16:23:18 oriol: the problem here is that's typical for authors when using grid to define some tracks in case some optional content is there 16:23:39 ... if the optional content is not there, then if they use grid-gap you get extra space 16:23:53 ... they basically want gaps to collapse together if there's no content in the track 16:24:10 ... proposal is an `empty-tracks` property with an initial value of `normal` 16:24:36 ... so empty tracks only collapse gaps with autofit 16:24:39 kurt has joined #css 16:25:16 ... then another value (`height` for `empty-cells` or `collapse` for consistency for `visibility`) that makes a track with no items in it or crossing it collapse 16:25:35 ... there's other proposals which would make it collapse only if the sizing function is guaranteed to be zero 16:25:45 ... or collapsing when the item spans 16:26:04 ... but that adds a fair amount of complexity, and the simple solution already covers the vast majority of use cases 16:26:15 ... for other variants we could consider other keywords in the future 16:26:20 q? 16:26:21 ... so I'd go with the simplest way 16:26:24 q+ 16:26:24 ack emilio 16:26:34 q+ 16:26:43 ack fantasai 16:26:47 fantasai: I think this value makes sense 16:26:57 ... some of the other behaviors are probably also valuable 16:27:05 ... so I think the name should maybe be more extensible 16:27:36 ... my suggestion is the `grid-collapse` property (`none` / `normal` as initial, `empty-tracks` as the value oriol is proposing) 16:27:45 astearns: `grid-track-collapse` might be better? 16:27:48 ack emilio 16:27:52 alisonmaher has joined #css 16:28:21 q+ 16:28:25 emilio: was going to bring up the name as well 16:28:32 ... but seems like a good idea 16:29:36 astearns: Is this always going to be grid specific? Flexbox doesn't have this implicit things, but masonry might? 16:29:54 ack fantasai 16:29:54 ... just asking whether this should be layout agnostic since gaps are more layout-agnostic 16:30:09 fantasai: conceptually it's about collapsing tracks, more than gaps 16:30:26 ... re. grid vs. masonry they both use the grid-* track management properties 16:31:39 ... if we're not making it grid specific we could do track-collapse, but I think grid- might make it easier to see they play together 16:31:50 ... was going to bring up that the default value could maybe be more useful 16:31:58 q+ 16:32:07 ... maybe if the track is completely empty and there's an intrinsic size it should collapse by default 16:32:16 ... not sure about compat tho 16:32:24 ack astearns 16:32:26 astearns: yeah compat is a bit concerning here 16:32:31 ack oriol 16:32:41 oriol: a bit concern about changing the default for web compat 16:32:52 ... the doing something different when the track sizing function is just intrinsic 16:33:12 ... might be a bit weird. `auto` is intrinsic, but auto tracks stretches to fill, should it still be considered empty? 16:33:31 ... this is related to the thing I talked about about whether the track is guaranteed to have a size of zero 16:33:38 ... so in general more magic behavior worries me 16:34:08 astearns: so details are going to be fuzzy, but sounds like starting to specify a `grid-track-collapse` prop might be a good idea? 16:34:31 fantasai: if we call it `grid-collapse` we can expand it to `grid-collapse-{rows,columns}` 16:34:40 +1 fantasai 16:34:55 ... the `track-` extra typing might be very wordy. Grid is mostly about tracks 16:35:04 PROPOSAL: Start defining a `grid-collapse` property 16:35:07 RESOLVED: Start defining a `grid-collapse` property 16:35:21 whereas grid-track-collapse-rows is very redundant 16:35:22 github-bot: take up https://github.com/w3c/csswg-drafts/issues/12102 16:35:22 Topic: [css-align] Clarify how `justify-self` affects automatic size of block-level box 16:35:22 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/12102. 16:35:52 oriol: two implementations of justify-self on block boxes (blink and servo). We interpreted some things that the spec says in different ways 16:36:01 ... some things we agree on fantasai disagreed on 16:36:04 ... want to clarify this 16:36:07 ... two questions: 16:36:23 ... first could be the effect of `justify-self` on the auto size of a block level box 16:36:40 ... spec says that values other than stretch makes auto size fit-content 16:36:49 ... so it applies to grid/flex items and block level items 16:36:54 ... both blink and servo did this 16:37:18 ... fantasai was interpreting it as this property doesn't affect block level sizing, only in over-constrained cases 16:37:38 +1 to Oriol - it makes it more consistent w/ grid/flex 16:37:50 ... I kinda prefer the fit-content behavior unconditional 16:37:58 ... allows to explain tables 16:38:21 ... could be explained as `justify-self: normal` on keywords is `start` rather than `stretch` 16:38:45 ... on the other hand means diverging from `
` and html `align` attributes since those don't prevent stretching 16:38:53 ... I prefer treating block-level boxes as other boxes 16:39:06 ... but if fantasai wants to argue for an exception... 16:39:06 ack fantasai 16:39:07 q+ 16:39:25 fantasai: this also plays into the related issue about the effect of these properties when anon boxes are present 16:39:34 ... anon boxes always stretch 16:39:59 ... so there's an issue there where if you take the position that this affects fit-content you get inconsistent behavior if you have anon boxes 16:40:19 ... I initially thought that this was fixing the alignment of stuff given how long block layout has existed 16:40:25 ... guess we could go either way 16:40:27 ack iank_ 16:40:44 iank_: IMO this makes the feature useful by default 16:40:57 ... so kinda prefer how servo and blink interpret it 16:40:58 q+ 16:41:12 ack emilio 16:41:20 emilio: Don't disagree, but was curious about the anonymous box situation 16:41:30 emilio: justify wouldn't apply to the anonymous box, right? 16:41:50 iank_: Concern for top-level anonymous boxes that are generated 16:42:07 iank_: consider our previous behavior a bug, so changed so that anonymous boxes ignore justify and always stretch, but we can talk about that issue separately 16:42:27 emilio: Makes sense to be consistent with block (???) to not introduce other issues 16:42:32 iank_: What do you mean? 16:42:40 emilio: If it doesn't do weird things if you have an anonymous block inside. 16:42:48 emilio: If that's ok, then making it work by default makes sense. 16:43:22 astearns: Do we have consensus? what's the resolution? 16:43:47 oriol: Values other than normal or stretch treat the automatic size as fit-content, just like in flex/grid 16:44:04 astearns: Does everyone agree? 16:44:45 fantasai: I'm ok with it. 16:44:47 fantasai: we should ack that this makes justify-self not work for html centering stuff 16:44:48 yeah, we've abandoned doing
with this now 16:44:59 PROPOSED: Values of `justify-self` other than normal or stretch treat the automatic size as fit-content, just like in flex/grid 16:45:03 RESOLVED: Values of `justify-self` other than normal or stretch treat the automatic size as fit-content, just like in flex/grid 16:45:30 oriol: there's another thing about how auto margins behave with this 16:45:39 ... in servo we have different interpretations 16:46:16 ... there's an example in the issue. If you set `justify-self: right` then the size will be `fit-content`, however if then you add auto margins, then these prevent `justify-self` from forcing fit-content 16:46:42 ... in servo justify-self still prevents the stretching even with auto margins, and I think that makes more sense 16:46:53 +1 16:46:53 https://github.com/w3c/csswg-drafts/issues/12102 16:47:28 iank_: yeah basically, do auto margins disable justify-self or just the alignment part of it 16:47:35 If stretching is disabled for zero margins, then it should definitely be disabled for auto margins 16:47:53 +1 16:48:15 fantasai: this goes back to the first issue, where alignment is applied after margins 16:48:26 which are applied after sizing decisions 16:48:28 oriol: right in this case the size of the margin box fills the container 16:48:48 ... so you don't see the effect but it's not "not working" 16:49:07 fantasai: if the box is larger than the container the auto margins will not absorb that space 16:49:16 ... not sure we want the alignment to take effect in that case 16:49:27 ... if you have auto margins you were expecting a particular alignment 16:49:41 ... or do you just start-align it 16:49:47 oriol: I think if you have unsafe alignment then why not 16:49:50 ... but yeah, not sure 16:50:02 iank_: I think auto margins are safe by default, so I think the defaults are actually the same 16:50:33 fantasai: right but in this case the margin can't absorb the negative space 16:50:59 iank_: but by default it's safe alignment so the default should be fine? 16:51:10 fantasai: not sure it falls out of the definitions 16:51:21 iank_: to be clear I'm fine changing blink here 16:51:24 I think CSS2.1 is written in a way that this wouldn't fall out. 16:51:33 astearns: does the previous resolution apply here? 16:51:40 oriol: probably should be a separate one 16:52:00 ... the question that fantasai raised could be for a separate issue. We can resolve for the non-overflowing cases 16:52:36 PROPOSED: alignment values different than stretch cause sizing to be fit-content, regardless of auto margins 16:52:41 PROPOSED: auto margins do not prevent justify-self from imposing fit-content 16:53:15 RESOLVED: auto margins do not prevent justify-self from imposing fit-content 16:53:40 github-bot: take up https://github.com/w3c/csswg-drafts/issues/11461 16:53:41 Topic: [css-align] `justify-items` and anonymous block boxes 16:53:41 OK, I'll post this discussion to https://github.com/w3c/csswg-drafts/issues/11461. 16:53:46 https://github.com/w3c/csswg-drafts/issues/11461#issuecomment-2842434810 16:54:28 oriol: since we resolve justify-self can force fit-content size, if you use justify-items on a block container, a block container with inline level contents, justify-items won't apply 16:54:45 ... if you then add a block, you add an anonymous block level box and justify-self applies to it 16:55:14 ... so it's very unexpected that adding a block-level sibling changes the alignment 16:55:39 ... option 1 would be that anon block boxes would always stretch rather than using justify-items of the parent 16:56:10 ... another option would be that justify-items other than initial you'd still wrap stuff 16:56:30 ... IMO option 1 is the easiest to implement in servo, also avoids some questions about what to do with percentages and so on 16:56:50 +1 Oriol - There is a whole can of worms involved w/ option (2) 16:57:04 ... percentages in the block axis skips anon boxes, should we skip them in the inline axis if we consider the other option? 16:57:26 ... miriam preferred option 2 since it's more useful for authors (no need to wrap in implicit elements) 16:57:33 ack miriam 16:57:57 q+ 16:58:03 ack fantasai 16:58:04 miriam: oriol described what I think, alignment is one of the more common things to do and doing it easily makes sense 16:58:10 https://www.w3.org/TR/css-text-4/#text-group-align-property 16:58:14 .. but either option feels better than the alternative 16:58:29 fantasai: there's one property that allows you to wrap things, not sure it's implemented 16:58:46 ... the behavior you want is not the behavior that would fall off from wrapping in anon boxes 16:59:11 ... consider a paragraph with text, block level, then text 16:59:39 ... if we wrap each in a box then they'd be independently aligned which I'm not sure is what you want 16:59:50 ack iank_ 16:59:55 iank_: pretty against option 2 17:00:07 ... quite a large can of worms 17:00:14 ... probably big source of confusion for web devs too 17:00:21 ... a little concerned about compat too 17:00:49 ... so prefer option 1, authors ??? text-align 17:01:08 astearns: we could resolve on updating the spec to option 1 with a note 17:01:16 miriam: ok with that 17:01:38 PROPOSED: Anonymous block boxes always stretch 17:02:15 RESOLVED: Anonymous block boxes always stretch (go with option 1) 17:02:36 topic: end 17:02:45 Zakim, end meeting 17:02:45 As of this point the attendees have been PaulG, emilio, kbabbitt, bramus, JoshT, kizu, oriol, andreubotella, jbreiland, schenney, flackr, bkardell, smfr, jensimmons, jfkthame, 17:02:48 ... moonira, miriam, gfaujdar, futhark, keithamus, vmpstr 17:02:48 RRSAgent, please draft minutes v2 17:02:49 I have made the request to generate https://www.w3.org/2025/05/14-css-minutes.html Zakim 17:02:56 I am happy to have been of service, astearns; please remember to excuse RRSAgent. Goodbye 17:02:56 topic: none 17:02:56 Zakim has left #css 17:03:02 futhark has left #css 17:24:41 emeyer has left #css 19:01:56 keithamus has joined #css 20:31:51 Linux_Kerio has joined #css 23:09:00 keithamus has joined #css