Re: [csswg-drafts] [css-anchor-position-1] Back-compat of scrollable containing block for all abspos with implicit anchors (#13067)

The CSS Working Group just discussed `[css-anchor-position-1] Back-compat of scrollable containing block for all abspos with implicit anchors`, and agreed to the following:

* `RESOLVED: add none value to position-anchor, make it the initial value, change UA stylesheet for popover`

<details><summary>The full IRC log of that discussion</summary>
&lt;kbabbitt> fantasai: for scrollable containing blocks of a positioned block<br>
&lt;kbabbitt> ... when you have a scroll container, there's scrollport which doesn't move with scroll<br>
&lt;kbabbitt> ... local containing block which is ICB equivalent for the scrollport<br>
&lt;kbabbitt> ... and there's the scrollable containing block which roughly corresponds to entire scrollable area<br>
&lt;kbabbitt> ... abspos boxes are defined currently if their CB is generated by a scroll container, they reference the LCB<br>
&lt;kbabbitt> ... if I position something bottom:0, in a scroll container, it will be positioned at the initial scroll position to coincide wuth bottom wedge of scroll part and scroll with container<br>
&lt;kbabbitt> ... with anchor pos, we have these fallback concepts and other kinds of sizing where exact position of that bottom matters<br>
&lt;TabAtkins> "fixed" -> size of scrollport, 'outside' the scroller (like fixpos). "local" -> size of scrollport, 'inside' the scroller at top (like ICB). "scrolling" -> size of scrollable content, 'inside' the scroller (this is new and anchorpos automatically uses it sometimes)<br>
&lt;kbabbitt> ... what's outside the container can affect layout, with try fallbacks or overflow alignment<br>
&lt;kbabbitt> ... as we add more capabilities to abspos, that edge becomes more present even in cases where you were only referencing top and left corners<br>
&lt;kbabbitt> ... we discussed this and decided to use the scrollable containing block as the containing block for boxes that have a default anchor element<br>
&lt;kbabbitt> ... problem with that is that even if you just use normal anchor positioning, boxes that have implicit anchor element now have default anchor element<br>
&lt;kbabbitt> ... and have now switched into this behavior even if they don't use anchor pos<br>
&lt;kbabbitt> ... existing page using popover for example with position bottom 0<br>
&lt;kbabbitt> ... will change behavior from being above the fold to below the fold<br>
&lt;kbabbitt> ... which is a compat issue<br>
&lt;kbabbitt> ... bottom 0 still needs to mean bottom of containing block<br>
&lt;iank_> (popover is `position:fixed` by default so also need `position: absolute` on the popover to trigger the switch)<br>
&lt;kbabbitt> ... but for purpose of overflow management we need a bigger area<br>
&lt;kbabbitt> ... my proposal is that if inset is auto, we resolve it to the edge of the scrollable area<br>
&lt;TabAtkins> q+<br>
&lt;kbabbitt> ... rather than the edge of the local containing block<br>
&lt;kbabbitt> ... and that creates the space we need without triggering overflow<br>
&lt;kbabbitt> ... and without changing interpretation of a fixed length<br>
&lt;kbabbitt> s/bottom of containing block/bottom of local containing block/<br>
&lt;astearns> ack TabAtkins<br>
&lt;kbabbitt> TabAtkins: I am with iank_<br>
&lt;kbabbitt> ... not liking this particular proposed resolution because it means auto no longer has as stable and obvious thing to resolve to<br>
&lt;kbabbitt> ... difference between leaving edge as auto and wanting to adjust a little bit<br>
&lt;kbabbitt> ... suddenly you opt into other interpretation and get a big jump you didn't expect<br>
&lt;kbabbitt> ... back compat issue is that having any anchor at all is what we resolved to use as a switch<br>
&lt;kbabbitt> ... some things get anchor ayutomatcially without doing anything<br>
&lt;kbabbitt> ... just fixing that bit would solve the back compat issue without being overly problematic in the other way<br>
&lt;kbabbitt> ... my preferrred solution is to explicitly key off non-auto default anchor<br>
&lt;kbabbitt> ... initial value auto will use implicit anchor<br>
&lt;kbabbitt> ... add implicit keyword which uses implicit anchor<br>
&lt;kbabbitt> ... that way you're affirmatively using anchor pos in a similar way to non-auto<br>
&lt;kbabbitt> ... that way we can add more implicit anchors in the future and it won't switch positioning behavior and be low impact<br>
&lt;kbabbitt> ... other possibilities iank_ mentioned of using ? anywhere in your insets<br>
&lt;kbabbitt> ... we rejected doing that for other reasons, don't recall the details<br>
&lt;iank_> i'm ok with that.<br>
&lt;kbabbitt> ... would instead propose to add implicit keyword, and key off having anchor and non-initial value for position-anchor property<br>
&lt;astearns> ack fantasai<br>
&lt;kbabbitt> fantasai: I have serious problems with that approach<br>
&lt;kbabbitt> ... 2 problems<br>
&lt;kbabbitt> ... 1 I don't think a property that controls anchor binding and changes how it matches the binding should have a big effect on layout<br>
&lt;kbabbitt> ... we're not changing element we're binding to, just changing keyword with exact same behavior, it just has a new side effect of changing how insets are resolved<br>
&lt;kbabbitt> ... that's really confusing<br>
&lt;kbabbitt> ... could have a question of whether there's a binding or not but shouldn't affect layout<br>
&lt;kbabbitt> ... 2, need this to work by default<br>
&lt;kbabbitt> ... if author needs to opt into ?? by default, they can do so with more obvious declaration<br>
&lt;kbabbitt> ... so I don't think that's a good plan<br>
&lt;kbabbitt> ... re: auto and 0 don't resolve to same thing - that's fine<br>
&lt;kbabbitt> ... if you want 10px of spacing, add a margin<br>
&lt;kbabbitt> TabAtkins: wasn't that auto and 0 resolve to same, auto is unpredictable value now<br>
&lt;kbabbitt> ... can't say I want to use current edge but inset a little bit<br>
&lt;kbabbitt> fantasai: add a margin<br>
&lt;kbabbitt> ... auto already has a lot of cases where it has an unpredictable value<br>
&lt;kbabbitt> ... can't say I want to be static position + 10px<br>
&lt;kbabbitt> ... this is already a feature of auto insets<br>
&lt;kbabbitt> iank_: for the non dominant edge it's always true you can inset a bit an dit works<br>
&lt;kbabbitt> ... I was playing around with it and it's very weird if you jump to a local when the right hand side is on the scrolling containing block<br>
&lt;kbabbitt> ... a lot of people do use insets in this way<br>
&lt;kbabbitt> ... I just want you in a little bit<br>
&lt;kbabbitt> ... people will run into jump and not understand it<br>
&lt;kbabbitt> ... very against that<br>
&lt;kbabbitt> fantasai: then let's require people to set position-area<br>
&lt;kbabbitt> TabAtkins: that's saying people should use a no-op property that indicates anchor pos vs the property I'm sating<br>
&lt;kbabbitt> fantasai: difference is position-area is a layout property<br>
&lt;kbabbitt> ... whereas position-anchor is how I connect an abspos to its anchor<br>
&lt;kbabbitt> ... and you want to introduce synonym to initial value<br>
&lt;kbabbitt> ... where only difference is one has a layout side effect<br>
&lt;kbabbitt> TabAtkins: like all the other non auto values yes<br>
&lt;kbabbitt> ... named anchor has same side effect<br>
&lt;kbabbitt> fantasai: no<br>
&lt;kbabbitt> TabAtkins: currently it does<br>
&lt;kbabbitt> ... per current spec it would give you side effect<br>
&lt;kbabbitt> ... problem is right now if you leave as auto and get explicit anchor, that triggers side effect which has back compat<br>
&lt;astearns> q+<br>
&lt;kbabbitt> ... so if you say implicit anchor and have that trigger<br>
&lt;kbabbitt> ... [missed]<br>
&lt;kbabbitt> iank_: previous resolution was to trigger this scrollable containing block behavior off the existence of default anchor<br>
&lt;kbabbitt> ... set via position-anchor property, not if you use position-area<br>
&lt;kbabbitt> ... spec is currently mismatched with that resolution<br>
&lt;kbabbitt> TabAtkins: because position-area only does something when you have a default anchor<br>
&lt;kbabbitt> ... if we care about position-area, it's a subset of having default anchor<br>
&lt;kbabbitt> fantasai: under current resolytion if you set position-anchor to --foo and there's no --foo you don't get behavior?<br>
&lt;kbabbitt> TabAtkins: correct<br>
&lt;kbabbitt> ... propose that if you have a default anchor and position-anchor is not default value you opt into the behavior<br>
&lt;kbabbitt> fantasai: you're saying I want synonym for auto, behaves just like auto, other than it has side effect on contianingh block<br>
&lt;kbabbitt> ... even though this property has no effect on layout prior to this discussion<br>
&lt;kbabbitt> ... and we have separate property for that<br>
&lt;kbabbitt> TabAtkins: we already resolved that if you have position-anchor --foo and --foo exists, that triggers<br>
&lt;kbabbitt> fantasai: I'm saying that was a bad decision<br>
&lt;kbabbitt> ... ok with saying you need to change position-area to span-all<br>
&lt;kbabbitt> ... or changing the way auto insets resolve<br>
&lt;kbabbitt> ... not okay with having a property whose sole purpose is to create a binding with 2 nearly identical values where one has side effect<br>
&lt;kbabbitt> astearns: little confused about how this new feature could have back compat issues<br>
&lt;kbabbitt> ... because you need to set both binding and position-area to get new behavior?<br>
&lt;astearns> ack astearns<br>
&lt;kbabbitt> TabAtkins: resolution we had was that if you are using anchor positioning, if your CB is a scroller, you start using scrollable containing block<br>
&lt;kbabbitt> ... that's a good behavior if you're actyally using anchor pos<br>
&lt;kbabbitt> ... problem is behavior for "are you using anchor pos" is just "do you have a default anchor" which is given byt the position-anchor property<br>
&lt;kbabbitt> ... if you specifgy a name and that matches something you're clearly using anchor pos<br>
&lt;kbabbitt> ... problem that default value auto will look for implicit anchor<br>
&lt;kbabbitt> ... and there's several sources for that<br>
&lt;kbabbitt> fantasai: so this would change behavior of any abspos value before pseudo element<br>
&lt;kbabbitt> TabAtkins: something using 0 will be at bottom of scroller instead of bottom of scrollers' ICB<br>
&lt;kbabbitt> chrisl: something being accidentally opterd in?<br>
&lt;kbabbitt> TabAtkins: correct<br>
&lt;kbabbitt> ... fantasai's preference is to change position-area<br>
&lt;kbabbitt> ... not super opposed but if you don't care about position-area, it's a little strange to have to turn it on and give it a no-op value just to make your anchor pos resolve<br>
&lt;kbabbitt> fantasai: not a no-opt, opting you into new behavior<br>
&lt;kbabbitt> TabAtkins: my thing is, thing that gives you position-anchor, add another keyword that opts you in<br>
&lt;miriam> q+<br>
&lt;kizu> Could it be both: either `position-area` or an explicit `position-anchor` will opt in?<br>
&lt;kbabbitt> ... use the fact that it's non-default value as a strong signal<br>
&lt;astearns> q+<br>
&lt;kbabbitt> ... also effectively a no-op since it's behavior of autp<br>
&lt;kbabbitt> ... but if you're not using position-area in other way you don't need to put that in your styles as well<br>
&lt;iank_> i'm strongly against setting `position-area`<br>
&lt;iank_> notbody is going to remember how to do that.<br>
&lt;kbabbitt> ... don't feel too strongly about which way we go, find position-area a little weird, but proposed thing about auto resolutions I do object to<br>
&lt;astearns> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to review the position-area value<br>
&lt;kbabbitt> fantasai: my proposal is switch to using positon-area as signal<br>
&lt;kbabbitt> ... its initial value is none<br>
&lt;kbabbitt> ... we have a span-all value which gets you whole 9 grid<br>
&lt;kbabbitt> ... any non-initial value would give you containign block is entire scrollable area<br>
&lt;kbabbitt> ... to compensate for anchor functions not using position-area in general ,change interprateation of auto for insets to expand out to sctollable area<br>
&lt;kbabbitt> ... specific value would go back to previous behavior<br>
&lt;kbabbitt> ... would be back compatible<br>
&lt;kbabbitt> ... otherwise you need some explicit signal<br>
&lt;iank_> q+<br>
&lt;kbabbitt> ... TabAtkins is proposing new keyword for position-anchor that will opt you into that behavior<br>
&lt;kbabbitt> ... I am saying we already have explicit switch<br>
&lt;astearns> ack miriam<br>
&lt;kbabbitt> miriam: tend to agree with fantasai here<br>
&lt;kbabbitt> ... what we are changing is not the anchor but the area<br>
&lt;kbabbitt> ... so position-area is what makes sense to do that<br>
&lt;kbabbitt> ... wonder if we can be more explicit? not just span-all<br>
&lt;kbabbitt> ... span-all has 2 slightly different meanings, can we explicitly say what I'm doing is opting into ... whatever it's called<br>
&lt;kbabbitt> ... does feel like we're talking about the area, that's what's changing<br>
&lt;kbabbitt> ... if we can say it more explicitly taht's good<br>
&lt;astearns> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to react to miriam to respond to that<br>
&lt;kbabbitt> fantasai: earlier we discussed a proposal to differentiate between these 3 CBS<br>
&lt;TabAtkins> (what do you mean by "2 slightly different meanings"?)<br>
&lt;kbabbitt> ... fixed, local, scrollable containing blocks<br>
&lt;kbabbitt> .... plan to work on switch for those 3 explicitly<br>
&lt;kbabbitt> ... would affect 9-grid for position-area as well as everything else<br>
&lt;kbabbitt> ... initially proposed auot to allow anchor pos to just work<br>
&lt;kbabbitt> ... there will be an ability to explicitly do that<br>
&lt;kbabbitt> fantasai: span-all aready says use whole 9 grid<br>
&lt;kbabbitt> ... bounds of that is whole scrollable CB<br>
&lt;kbabbitt> TabAtkins: was curoius what miriam meant by 2 slightly different meanings<br>
&lt;kbabbitt> miriam: is that what fantasai just clarified?<br>
&lt;kbabbitt> TabAtkins: yes we use entire scrollable CB<br>
&lt;kbabbitt> miriam: if that means that already ... just noting there's a difference between different containers you could consider 9 grid to be part of or offset of, and we're switching from one to another<br>
&lt;kbabbitt> ... in that case I agree with fantasai straightforwardly<br>
&lt;kbabbitt> astearns: kind of sounds like we are relitigating the initial design that relied almost entirely on anchor functions and we made a decision to go with position-area instead<br>
&lt;kbabbitt> ... perfectly happy having the anchor functions trigger on position-area as opposed to the position-anchor property<br>
&lt;kbabbitt> ... particularyly since position-anchor has defauylt value that authors might find themselves having to work around without making any anchor pos decisions<br>
&lt;kbabbitt> ... I am probably confused myself but i think I am weakly in favor of fantasai's proposal<br>
&lt;kbabbitt> TabAtkins: which version?<br>
&lt;kbabbitt> astearns: using position-area as the trigger<br>
&lt;astearns> ack iank_<br>
&lt;astearns> ack astearns<br>
&lt;kbabbitt> iank_: don't really like position-area to change the behavior of the insets<br>
&lt;fantasai> [The two variants were a) use position-area or b) use position-area and also reinterpret inset:auto ]<br>
&lt;kbabbitt> ... you can use anchor pos in 2 different ways<br>
&lt;kbabbitt> ... position-area or insets with anchor functions<br>
&lt;kbabbitt> ... when you're working in anchor function mode, having to remember oh it's not working in scroll container, I need to set position-area span-all, no one's going to do that<br>
&lt;kbabbitt> ... so I strongly dislike that<br>
&lt;kbabbitt> ... to the point where I'll probably object on API design standpoint<br>
&lt;TabAtkins> miriam, the 9-grid just divvies up *whatever* the CB is; span-all means "use the whole 9-grid". It doesn't *inherently* say anything about which CB you're using, but it does function as a signal for "i'm using anchor positioning", which is a signal we want to use to automatically opt you into the scrollable CB. (and we have resolution to change 'position' to let you explicitly choose your CB too, but this is just to flip the "default" answer)<br>
&lt;kbabbitt> ... shouldn't have to care about position-area if just using anchor functions<br>
&lt;kbabbitt> ... variant could be, if you have a non-implicit default anchor or using position-area, I'd be happy with that<br>
&lt;kbabbitt> ... doesn't affect popover which is position:fixed<br>
&lt;kbabbitt> ... unless you change to absolute<br>
&lt;kbabbitt> ... will affect before, after<br>
&lt;kbabbitt> ... but not sure of compat of that anyway<br>
&lt;kbabbitt> ... my preferred solution is non-implicit default anchor, or use position-area property<br>
&lt;astearns> ack fantasai<br>
&lt;kbabbitt> fantasai: I think it's a bit weird to have the method of the binding change the layout<br>
&lt;kbabbitt> ... whether or not there's a binding makes sense, but not method<br>
&lt;kbabbitt> ... we want people to choose binding depending on whetehr it's presentational or semantic effect, not what layout side effects it has<br>
&lt;kbabbitt> ... would not expect layout side effects based on choice of HTML or CSS<br>
&lt;kbabbitt> ... would be nice if anchor pos just worked, why I proposed having auto value of insets resolve to edges of scrollable CB<br>
&lt;TabAtkins> the issue Ian has with "rely on position-area" is that it means some otherwise-very-similar styles act wildly differently, as he pointed out in https://github.com/w3c/csswg-drafts/issues/12552#issuecomment-3141570111<br>
&lt;kbabbitt> ... maybe not ideal that inset 10px doesn't get you 10px inset from currently effective scolling container<br>
&lt;TabAtkins> example: .anchored1 {<br>
&lt;TabAtkins>   position-anchor: --a;<br>
&lt;TabAtkins>   position-area: bottom;<br>
&lt;TabAtkins> }<br>
&lt;TabAtkins> .anchored2 {<br>
&lt;TabAtkins>   position-anchor: --a;<br>
&lt;TabAtkins>   top: anchor(bottom);<br>
&lt;TabAtkins> }<br>
&lt;kbabbitt> ... but easy to use marcgins if you want spacing<br>
&lt;kbabbitt> ... [missed] is not an unreasonable thing for auto to do<br>
&lt;kbabbitt> iank_: I think it is unreasonable, most people use insets rather than margins for htis<br>
&lt;kbabbitt> TabAtkins: pretty opposed to the auto change<br>
&lt;fantasai> s/[missed]/having auto resolve to a non-zero value/<br>
&lt;kbabbitt> ... don't like its magic<br>
&lt;kbabbitt> astearns: how do we resolve this standoff?<br>
&lt;kbabbitt> fantasai: hear from more people<br>
&lt;kbabbitt> astearns: should we take this back to the issue and go through examples?<br>
&lt;kbabbitt> ... iank_, you said you played with it and it was bad, would be helpful to see what you were playing with<br>
&lt;kbabbitt> iank_: I can do that<br>
&lt;kbabbitt> TabAtkins: example in chat, our current resoluytion which relies on default anchor, both of those get scrollable containing block<br>
&lt;kbabbitt> ... using position-area has a little more magic but for raw positioning they work the same<br>
&lt;kbabbitt> ... if we only use position-area as switch, these two would be dramatically different<br>
&lt;kbabbitt> ... using anchor function would most certtainly be overflowing and trigger fallbacks<br>
&lt;kbabbitt> ... because you'd use the LCB which is above the fold section<br>
&lt;kbabbitt> ... which is weird because it looks like you're using anchor pos<br>
&lt;kbabbitt> ... authors have to use no-op position-area value<br>
&lt;flackr> q+<br>
&lt;kbabbitt> ... onlh problme with intiial reasolution is that it has back compat in non anchor pos cases<br>
&lt;kbabbitt> ... we ideally want to just exclude back compat problem rather than change reoslyutionmore dramatically<br>
&lt;astearns> ack flackr ;<br>
&lt;astearns> ack flackr<br>
&lt;kbabbitt> flackr: do we have evidence that there is a compat issue with changing abspos behavior in this case?<br>
&lt;kbabbitt> TabAtkins: we don't have examples in the wild, certain it exists, will hapen if anyone has done before element with abspos and bottom 0 containign block scroller<br>
&lt;kbabbitt> flackr: what's the use case for that?<br>
&lt;kbabbitt> TabAtkins: if you have ever used anything with bottom inset in CB scroller you will have changed behavior<br>
&lt;kbabbitt> ... what we did in past will change position<br>
&lt;kbabbitt> flackr: sizing changes would be bigger issue<br>
&lt;kbabbitt> TabAtkins: yes for example top0 bottom: 0<br>
&lt;astearns> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to comment on the example with implicit anchors<br>
&lt;kbabbitt> ... suddenly you're size of entire scroller<br>
&lt;kbabbitt> fantasai: back to TabAtkins example he's using position-anchor to connect<br>
&lt;kbabbitt> ... if you rely on position-anchor that would not exist<br>
&lt;kbabbitt> ... that's the case that's creating some of the tension here<br>
&lt;kbabbitt> ... an anchor exists but not using position-anchor property<br>
&lt;astearns> s/on position-anchor/on the implicit position-anchor/<br>
&lt;kbabbitt> ... would be nice if that just worked<br>
&lt;kbabbitt> ... but what TabAtkins is proposing is that top example would be just position-area bottom since we have ancghor<br>
&lt;kbabbitt> ... but second example would have to say position-anchor something as well as anchor top anchor bottom<br>
&lt;kbabbitt> ... would be nice to make that just work, fact ytou have to say position-anchor in order to get your containing block to work is quite weird<br>
&lt;kbabbitt> ... shouldn't change layout behavior<br>
&lt;fantasai> ... you already have an anchor association, and you're not associating it<br>
&lt;kbabbitt> TabAtkins: though your proposal ignoring inset ayuto for a bit would still require another line there<br>
&lt;kbabbitt> ... which is just as much ofa put a no-op in<br>
&lt;kbabbitt> fantasai: right, that's why I wanted to change interpretation of autop<br>
&lt;kbabbitt> ... and if you add an extra line, it should be position-area<br>
&lt;fantasai> (and not position-anchor)<br>
&lt;kbabbitt> TabAtkins: we'll object to changing auto inset behavior in the way that was suggested<br>
&lt;kbabbitt> ... however what if we go with a non-implicit anchor or a non-none position area<br>
&lt;kbabbitt> ... that way in the example from iank_ either position-anchor --a or position-area span-all would work<br>
&lt;kbabbitt> fantasai: don't think it is good for authors to have implicit anchor have different behaviors than explicit anchor<br>
&lt;kbabbitt> ... don't think method of binding should have effect on layout<br>
&lt;miriam> q+<br>
&lt;kbabbitt> ... if all keywords have special side effect except initial that makes a little more sense<br>
&lt;kbabbitt> ... don't want to push authors to consider layout effects when trying to decide if they should use explicit or implicit binding, HTML or CSS<br>
&lt;iank_> q+<br>
&lt;kbabbitt> ... that shouldn't be about whether there's a layout effect, only about what is appropriate type of binding<br>
&lt;kbabbitt> .... also thing it's weird to use binding property as layout switch<br>
&lt;kbabbitt> ... less objectionable if it's not deciding which binding to use, but using a binding property as a binding switch is still weird and I think confusing<br>
&lt;astearns> ack miriam<br>
&lt;fantasai> s/binding switch/layout switch/<br>
&lt;kbabbitt> miriam: seems like all this is caused by making everything magical without opting in<br>
&lt;kbabbitt> ... wonder about just having a literal opt-in<br>
&lt;kbabbitt> ... default of position-anchor is not auto, it's none<br>
&lt;kbabbitt> ... and you have to set to auto if you want an anchor<br>
&lt;TabAtkins> q for fantasai: wait, are you okay with "non-initial position-anchor *or* position-area", so using the implicit anchor with position-area switches? because that's totally fine with me<br>
&lt;kbabbitt> ... or explicitly opt into anchor pos for anything else to work<br>
&lt;kbabbitt> ... would be a normal thing in CSS<br>
&lt;kbabbitt> ... for positon-anchor, real opt-in<br>
&lt;astearns> ack iank_<br>
&lt;kbabbitt> iank_: what was the reason that we didn't want to trigger off anchor functions on insets?<br>
&lt;kbabbitt> TabAtkins: don't remember and that's a problem<br>
&lt;kbabbitt> ... we resolved to not do it early in the proposal discussion, year + ago<br>
&lt;kbabbitt> ... don't recall exactly what the issue was<br>
&lt;kbabbitt> emilio: don't remember either<br>
&lt;kbabbitt> TabAtkins: we decided not to do that, don't remember exact reason<br>
&lt;kbabbitt> emilio: anchor functions ... when you do interleaving, anchor functions resolve to actual piel values at computed style time<br>
&lt;kbabbitt> ... computed style doesn't have info to tell if there's an anchor reference<br>
&lt;kbabbitt> ... if you keep magic bit for anchor function, it doesn't round-trip<br>
&lt;kbabbitt> ... div.style.bottom = gCS.bottom, it goes away, would be bad<br>
&lt;kbabbitt> iank_: abspos doesn't reoundtrip insets today anyway<br>
&lt;kbabbitt> ... does it?<br>
&lt;kbabbitt> TabAtkins: yeah?<br>
&lt;kbabbitt> emilio: auto resolves<br>
&lt;Snugug> I'm being told by someone in WICG that they're looking for CSS representation for the scrollbar feature. I'm not sure I'm the right person to go down and represent the WG, but if no one else is able to do so I will<br>
&lt;kbabbitt> iank_: shrink to fit vs stretch ... you % will resolve differently<br>
&lt;kbabbitt> fantasai: won't change % resolution because that's based on CB<br>
&lt;kbabbitt> ... resolving auto might have some effect<br>
&lt;kbabbitt> ... anything else should round-trip<br>
&lt;Snugug> will do.<br>
&lt;kbabbitt> iank_: I would be fine with losing the round-tripping<br>
&lt;kbabbitt> emilio: pretty unfortunate, this would also be the case even with typed om that doesn't do resolved value shenanigans<br>
&lt;kbabbitt> ... typed om doesn't resolve auto<br>
&lt;kbabbitt> ... but does resolve anchor to px<br>
&lt;kbabbitt> ... due to how anchor is defined<br>
&lt;astearns> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to suggest using position-area OR position-try<br>
&lt;kbabbitt> fantasai: the problem we're running into doesn't happen with TabAtkins example<br>
&lt;kbabbitt> ... problem happens when we add to that example something like position-try<br>
&lt;kbabbitt> ... so what if we trigger SCB on having either position-area non-initial or position-try non-initial<br>
&lt;kbabbitt> ... would that solve teh core problem?<br>
&lt;kbabbitt> iank_: don't think that works because available space is different between 2 examples<br>
&lt;kbabbitt> .... if it' sleft or right, available space of local CB vs scroillable CB is 2 very diferent things<br>
&lt;kbabbitt> ... shirnbk to fit will be different<br>
&lt;kbabbitt> TabAtkins: height % will also be different<br>
&lt;kbabbitt> fantasai: changing the resolution of % also, a lot of things to trigger based on<br>
&lt;kbabbitt> ... also you have the case of, if you use anchor func with named anchor vs implicit anchor, you get different layout behavior alos<br>
&lt;kbabbitt> ... just keying off position anchor is for layout puyrposes is not the right switch<br>
&lt;kbabbitt> iank_: you get different behavior anyway if you use position-anchor<br>
&lt;kbabbitt> ... very big layout switch anyway<br>
&lt;kbabbitt> astearns: can we go back to miriam's suggestion of requiring an opt-in for anchor instead of this implicit anchor behavior?<br>
&lt;kbabbitt> fantasai: position-area span-all is an explicit opt-in<br>
&lt;kbabbitt> TabAtkins: problem is, abspos behavior today is straight up broken for most anchor related use cases<br>
&lt;kbabbitt> ... anything that cares about the space breaks in most cases if you use local CB of your scorller<br>
&lt;kbabbitt> ... taht's why we want to be forgiing in opting into scrollable CB instead<br>
&lt;kbabbitt> ... explicit opt in a<br>
&lt;kbabbitt> ... problem when you have other things that opt into anchor pos<br>
&lt;kbabbitt> miriam: we have lots of things that opt into grid but you still have to set display grid and that' suyseful<br>
&lt;kbabbitt> astearns: and we're tying ourselves into knots on all possible triggers for anchor pos<br>
&lt;emilio> q+<br>
&lt;kbabbitt> ... do like simplicity of single property that has to be set to something, that gets you into new anchor pos behavior<br>
&lt;kbabbitt> TabAtkins: very likely can't key all anchor pos off some new opt-in, been shipped in several browsers for quite a while<br>
&lt;kbabbitt> astearns: just changing implicit anchor behavior to require an opt-in with the property that has that anchor choice built in<br>
&lt;kbabbitt> ... taking the implicit anchor and making it an explicit choice<br>
&lt;kbabbitt> fantasai: initial value of position-anchor should be none?<br>
&lt;kbabbitt> astearns: yes<br>
&lt;kbabbitt> miriam: that's what I was saying<br>
&lt;kbabbitt> iank_: would likely be fine with popver if we did that and adde dposition anchor implicit for that<br>
&lt;kbabbitt> ... popovers are position fixed by default and don't have this behavior<br>
&lt;emilio> q-<br>
&lt;kbabbitt> ... probably fine to be honest<br>
&lt;kbabbitt> TabAtkins: popover is just a matter of one more line in UA stylesheet, should be fine<br>
&lt;kbabbitt> fantasai: whole point of defining implicit anchor is so you don't ahve to think about that connection<br>
&lt;kbabbitt> miriam: disagree, you still don't have to know what the name of it is<br>
&lt;kbabbitt> ... still useful to get automatic anchor even if you explicitly opt in<br>
&lt;kbabbitt> flackr: yes, that was main reason it's useful<br>
&lt;kbabbitt> astearns: of the things we've discussed, I think that's the most promising thing<br>
&lt;kbabbitt> ... I think we should either resolve on auto anchor selection being a value you have to put in property, or take this back to the issue and move on<br>
&lt;kbabbitt> TabAtkins: good with first option<br>
&lt;kbabbitt> fantasai: would like to hear from kizu<br>
&lt;kbabbitt> iank_: I'm okay with it<br>
&lt;kbabbitt> kizu: &lt;sigh><br>
&lt;kbabbitt> miriam: I agree with kizu<br>
&lt;adamargyle> need demos? need to see something…<br>
&lt;kbabbitt> kizu: I like the idea of making the position-anchor none by default<br>
&lt;kbabbitt> ... for pseudo elements you opt in by doing this or you could use implicit keyword inside anchor function as well<br>
&lt;kbabbitt> ... so you don't have to mention as position-anchor<br>
&lt;flackr> if it's none by default do we need to use the keyword implicit or is it just auto?<br>
&lt;kbabbitt> TabAtkins: we would add the implicit keyword as one of the things we put in implicit anchor<br>
&lt;kbabbitt> ... right now if you omit you get popover behavior<br>
&lt;iank_> thats a good idea.<br>
&lt;kbabbitt> fantasai: if we change this behavior to not create binding by default, inital value should be none<br>
&lt;TabAtkins> default-anchor initial value becomes `none`. `auto` selects an implicit anchor.<br>
&lt;kbabbitt> astearns: proposed resolution is that the default value of position-anchor is `none` but you can use `auto` to opt in to implicit anchor<br>
&lt;kbabbitt> fantasai: so we add new value, and change initial value<br>
&lt;kbabbitt> ... and also add to stylesheet for popver<br>
&lt;kbabbitt> astearns: any concerns?<br>
&lt;kbabbitt> fantasai: don't love it but can live with it<br>
&lt;kbabbitt> TabAtkins: this is my proposal with words changed<br>
&lt;kbabbitt> fantasai: no it's a little diffreent, we don't have synonyms<br>
&lt;kbabbitt> astearns: objections?<br>
&lt;kbabbitt> nt1m: if this new value is new default, why do we need to add to stylesheet?<br>
&lt;kbabbitt> emilio: popover wants old behavior<br>
&lt;kbabbitt> fantasai: popover would continue to have implicit anchor you could just use, anything else with implicit anchor you need to opt in<br>
&lt;kbabbitt> ... :before and after which create a binding will no longer do that<br>
&lt;kbabbitt> nt1m: we'd be breaking all the demos that apply anchor pos on pseudo elements?<br>
&lt;kbabbitt> emilio: the ones that don't use position-area<br>
&lt;kbabbitt> fantasai: we didn't resolve that position-area would also be a switch<br>
&lt;kbabbitt> [crosstalk]<br>
&lt;kbabbitt> fantasai: demos that currently use before and after ...<br>
&lt;kbabbitt> TabAtkins: not safe to do current behavior<br>
&lt;kbabbitt> iank_: and I don't think we've shipped before and after behavior<br>
&lt;kbabbitt> astearns: I hear some reservations but no objections<br>
&lt;kbabbitt> RESOLVED: add none value to position-anchor, make it the initial value, change UA stylesheet for popover<br>
&lt;Snugug> @astearns The meeting had wrapped by the time I got down there and it was unclear from those who were still in the room whether the topic had been presented or what the results were<br>
</details>


-- 
GitHub Notification of comment by css-meeting-bot
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/13067#issuecomment-3525018605 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Thursday, 13 November 2025 03:10:58 UTC