Re: [csswg-drafts] [css-anchor-position-1] inset-inline-start: anchor(start) is confusing (#13734)

The CSS Working Group just discussed `[css-anchor-position-1] inset-inline-start: anchor(start) is confusing`, and agreed to the following:

* `RESOLVED: No change for now, file an issue to make logical values clearer more generally (e.g. by introducing container-start etc.)`

<details><summary>The full IRC log of that discussion</summary>
&lt;emilio> fantasai: we have these wm-relative start/end<br>
&lt;emilio> ... sometimes these are relative to a separate thing, container vs. element<br>
&lt;emilio> ... if you have an arabic select in an english page<br>
&lt;emilio> ... how do you want that to layout?<br>
&lt;emilio> ... in its container's wm or the anchor's wm<br>
&lt;emilio> ... for logical props we did the element's writing-mode<br>
&lt;emilio> ... because we don't know the cb at that point<br>
&lt;emilio> ... but with alignment we use container's wm<br>
&lt;emilio> ... but you say self-start to align in their own direction<br>
&lt;emilio> ... anchor pos is interesting because you're using the wm of the anchor box to resolve inset-inline-start<br>
&lt;emilio> ... but the anchor(start) gets the start using the WM of the containing block which in most cases is going to be the page itself (e.g. for fixed pos)<br>
&lt;emilio> ... so inset-inline-start: anchor(start) gets nonsensical results<br>
&lt;emilio> ... because you're anchoring against the wrong edge<br>
&lt;emilio> ... this showed up in a demo from argyle<br>
&lt;emilio> ... and the position is borked in some cases...<br>
&lt;emilio> ... are we setting people up for failure here?<br>
&lt;emilio> ... I think we are<br>
&lt;emilio> ... and I don't like it<br>
&lt;TabAtkins> q+<br>
&lt;florian> q+<br>
&lt;Rossen> ack TabAtkins<br>
&lt;emilio> TabAtkins: while I understand the concern<br>
&lt;emilio> ... there is an extremely consistent pattern about what a bare logical keyword refers in various contexts<br>
&lt;emilio> ... in anchor pos they have a particular meaning<br>
&lt;emilio> ... would be very unfortunate if some properties interpreted bare keywords against one box and others in another<br>
&lt;emilio> ... e.g. position-area<br>
&lt;emilio> ... would be really unfortunate that position-area and anchor(start) referred to different thign<br>
&lt;emilio> ... logical properties are unfortunate<br>
&lt;emilio> ... you always get this mismatch with logical values vs. logical properties<br>
&lt;emilio> ... so I don't want to change this, I think it happens everywhere<br>
&lt;emilio> ... don't want to break this for anchor functions specifically<br>
&lt;emilio> ... we might have made a mistake and should've made the logicals were different<br>
&lt;oriol> +1<br>
&lt;emilio> ... but we're in the world that we area where logical vals refer to cb and self-* refer to your own<br>
&lt;Rossen> ack florian<br>
&lt;emilio> ... we should stick with that<br>
&lt;emilio> florian: are we in a situation where we need to care about three rather than 2?<br>
&lt;emilio> ... is the anchor's WM relevant?<br>
&lt;emilio> TabAtkins: there are use cases that would like to, but we've avoid adding it until someone bugs us about it enoough<br>
&lt;emilio> florian: your argument for consistency makes sense but I don't know it trumps<br>
&lt;iank_> `anchor(inside)`/etc solves this<br>
&lt;emilio> TabAtkins: the problem is solved, you can use `anchor(self-start)`<br>
&lt;emilio> florian: problem needs to be solved *well*<br>
&lt;emilio> TabAtkins: want to push back pretty strongly<br>
&lt;emilio> ... if there's no missing / un-addressable use case, consistency is a usability concern<br>
&lt;emilio> ... teachability / knowledge-transfer are super important, not theoretical purity<br>
&lt;emilio> ... so as long as getting it is stupid, and I think using self-start is fine since that's what you need to use in position-area<br>
&lt;Rossen> q<br>
&lt;emilio> florian: it seems like an author deliberately trying to solve it has the tools<br>
&lt;emilio> fantasai: argyle was deliberately trying to solve it and got it wrong<br>
&lt;emilio> TabAtkins: I don't see why this doesn't apply to all other cases<br>
&lt;emilio> ... if we want to change all of them we can try<br>
&lt;emilio> ... but I don't want this to be a one off<br>
&lt;emilio> q+<br>
&lt;Rossen> ack emilio<br>
&lt;fantasai> emilio: I agree with Tab generally. It is very unfortunate though.<br>
&lt;fantasai> emilio: If we did at parse-time change anchor-start to container-start or otherwise give them new names that are more explicit<br>
&lt;fantasai> emilio: I think it may itigate some of that.<br>
&lt;fantasai> emilio: It will show up in devtools, and it'll be more obvious that it's not what you want<br>
&lt;fantasai> emilio: I do get confused all the time about what things are relative to<br>
&lt;fantasai> emilio: For example float logical values<br>
&lt;fantasai> emilio: If this is confusing, and I think we all agree it is.<br>
&lt;fantasai> emilio: you try to do the right thing, you do the obivous thing to match 'start' and 'start'<br>
&lt;fantasai> emilio: Maybe we can add a better name for the containing block values?<br>
&lt;fantasai> TabAtkins: I wouldn't be against that, to ad a cb-foo variant and employ aliasing so that unlabeled one gets transformed<br>
&lt;fantasai> TabAtkins: as long as we don't do it for just this spot<br>
&lt;emilio> emilio: maybe just `container-start` / `self-start`?<br>
&lt;emilio> fantasai: yeah wouldn't do `cb-`<br>
&lt;emilio> TabAtkins: so preference close this no change but file a new issue to make this more understandable across CSS<br>
&lt;sgill> q+<br>
&lt;emilio> Rossen: feels like a big change<br>
&lt;Rossen> ack sgill<br>
&lt;emilio> emilio: not really, just parse aliases all the way<br>
&lt;emilio> sgill: tab you mentioned that we have all these other instances where this is confusing and here we have a scenario where someone was trying to get it right and got it wrong<br>
&lt;emilio> ... are there other cases where we have the same issue but it's as hard to get it wrong<br>
&lt;emilio> TabAtkins: position-area: inline-start it'd be the container's inline-start<br>
&lt;emilio> ... but if your direction is opposite ... same confusion<br>
&lt;emilio> ... I don't think this has been a worse problem is that as long as your page is in the same direction the difference doesn't matter, orthogonal stuff is pretty rare<br>
&lt;emilio> ... but clear naming of the values is a start<br>
&lt;fantasai> emilio: Reason it's so bad in this csae, for anchor-positioning the CB is often the viewport<br>
&lt;fantasai> emilio: So not close to your anchor or the element being anchored<br>
&lt;fantasai> emilio: And that's what's making it a real problem<br>
&lt;fantasai> emilio: Not so common in e.g. flexbox or grid, where items are children<br>
&lt;fantasai> emilio: Even if mixed directionality, just aligning things<br>
&lt;fantasai> emilio: So anchoring has surfaced this problem in a way that didn't previously<br>
&lt;Rossen> ack fantasai<br>
&lt;emilio> fantasai: was going to say what emilio said, anchor pos increases the distance between element and containing-bloc<br>
&lt;emilio> ... and there might be multiple levels of context changes<br>
&lt;emilio> ... previously for alignment we didn't have this issue<br>
&lt;emilio> ... where most of the things you're trying to align in the same direction<br>
&lt;emilio> ... that's why for alignment we defaulted to using the container<br>
&lt;emilio> ... might actually make sense to use the element's direction for abspos alignment<br>
&lt;emilio> ... for abspos more generally the alignment is much more about the element<br>
&lt;emilio> ... the abpos layout is less container focused<br>
&lt;emilio> TabAtkins: that's not true, multiple elements could be anchored positioned<br>
&lt;emilio> fantasai: they might be anchored to different things but you are not trying to line them up<br>
&lt;emilio> ... not the way you do with items in a list<br>
&lt;emilio> ... emilio's idea of creating aliases makes sense<br>
&lt;florian> q+<br>
&lt;emilio> ... we could also introduce the container-* variants for everything but for abspos<br>
&lt;emilio> ... plus abspos has the issue with inset<br>
&lt;emilio> ... maybe we should switch the value space keywords for anchor / abspos alignment to not default to cb<br>
&lt;emilio> TabAtkins: my fear is that because logical pos are hard to reason about<br>
&lt;florian> q-<br>
&lt;emilio> ... the less context-specific we need to carry around to know what a value even means the better<br>
&lt;emilio> ... so having bare logical keywords for this is valuable<br>
&lt;emilio> ... because this is a corner case I don't think it's worth complicating the model as a whole where some starts resolve to self and others to container<br>
&lt;emilio> ... since mixed direction is somewhat uncommon<br>
&lt;emilio> ... one wrinkle, does the ICB get the the root WM?<br>
&lt;emilio> fantasai: yes<br>
&lt;emilio> TabAtkins: cool<br>
&lt;fantasai> emilio: Some people do writing-mode on body<br>
&lt;fantasai> Rossen: We propagate that<br>
&lt;emilio> florian: but on &lt;main> you're screwed<br>
&lt;emilio> PROPOSED: Close no change, file an issue to make logical values clearer more generally<br>
&lt;emilio> fantasai: might want to revisit after the other one, introduce keywords across the world ...<br>
&lt;fantasai> PROPOSED: No change for now, file an issue to make logical values clearer more generally (e.g. by introducing container-start etc.)<br>
&lt;fantasai> RESOLVED: No change for now, file an issue to make logical values clearer more generally (e.g. by introducing container-start etc.)<br>
</details>


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


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

Received on Thursday, 2 April 2026 21:30:52 UTC