- Notifications
You must be signed in to change notification settings - Fork2.9k
Add anchor attribute#9144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Add anchor attribute#9144
Uh oh!
There was an error while loading.Please reload this page.
Conversation
The anchor attribute can be used to set up CSS anchor positioning bysetting an implicit anchor element:https://drafts.csswg.org/css-anchor-1/#implicit-anchor-element
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
This patch also adds WPTs for the anchor attribute (without popovers)to support the HTML PRwhatwg/html#9144Fixed: 1432016Change-Id: I3e80326268008e6beaf74389bb32c01050406a81
This patch also adds WPTs for the anchor attribute (without popovers)to support the HTML PRwhatwg/html#9144Fixed: 1432016Change-Id: I3e80326268008e6beaf74389bb32c01050406a81Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4434155Commit-Queue: Joey Arhar <jarhar@chromium.org>Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>Reviewed-by: Joey Arhar <jarhar@chromium.org>Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com>Auto-Submit: Xiaocheng Hu <xiaochengh@chromium.org>Cr-Commit-Position: refs/heads/main@{#1131479}
This patch also adds WPTs for the anchor attribute (without popovers)to support the HTML PRwhatwg/html#9144Fixed:1432016Change-Id: I3e80326268008e6beaf74389bb32c01050406a81Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4434155Commit-Queue: Joey Arhar <jarhar@chromium.org>Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>Reviewed-by: Joey Arhar <jarhar@chromium.org>Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com>Auto-Submit: Xiaocheng Hu <xiaochengh@chromium.org>Cr-Commit-Position: refs/heads/main@{#1131479}
This patch also adds WPTs for the anchor attribute (without popovers)to support the HTML PRwhatwg/html#9144Fixed: 1432016Change-Id: I3e80326268008e6beaf74389bb32c01050406a81Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4434155Commit-Queue: Joey Arhar <jarhar@chromium.org>Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>Reviewed-by: Joey Arhar <jarhar@chromium.org>Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com>Auto-Submit: Xiaocheng Hu <xiaochengh@chromium.org>Cr-Commit-Position: refs/heads/main@{#1131479}
…r attribute changes, a=testonlyAutomatic update from web-platform-tests[anchor-position] Update layout on anchor attribute changesThis patch also adds WPTs for the anchor attribute (without popovers)to support the HTML PRwhatwg/html#9144Fixed: 1432016Change-Id: I3e80326268008e6beaf74389bb32c01050406a81Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/4434155Commit-Queue: Joey Arhar <jarhar@chromium.org>Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>Reviewed-by: Joey Arhar <jarhar@chromium.org>Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com>Auto-Submit: Xiaocheng Hu <xiaochengh@chromium.org>Cr-Commit-Position: refs/heads/main@{#1131479}--wpt-commits: db5d9506cb37895b200037877628911afd3fac14wpt-pr: 39576
Before looking at this I'd like to see topic: popover |
jpzwarte commentedMay 19, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I've moved my previous comment to#9311. |
cwilso commentedJun 5, 2023
@annevk I'm not sure I understand why this work is blocking on popover. Although popover is one place anchor would be useful, of course, it's not the only scenario - and it seems like popover's needs are addressed here. What is the scope of your concern for what needs to be investigated before anchor work can proceed? |
nt1m commentedJun 6, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
@josepharhar@tabatkins My initial thought looking at this is whether we can leverage presentation hints in some way instead of an "implicit anchor element", while still making it work conveniently for developers. The idea behind this seems fine to me though. |
@cwilso my concern is that popover landed in the standard with lots of issues that need to be addressed and it's been taking quite a long time for them to be addressed. That makes me uncomfortable about new features. |
I'm not sure how that would be possible. Without an implicit anchor element, you need anamed anchor element, which means that, assuming we could craft an appropriate selector (not certain that's true, haven't thought about it enough) we'd have to reserve a name just for this use-case. And an element can only have one anchor name, so it would conflict with authors using an anchor name on the element for other purposes. (Even if we change to allow multiple anchor names, which there's an open issue about, we'd still conflict since CSS has never gained a way to add to a list.) So I don't think it's possible to do this, no. Skipping past the feasibility, tho, can I ask why you want to do this? If there's a particular reason you want to lean on presentational hints instead, I'd like to know in case it impacts other things architecturally. |
We want to ship this soon in chrome along with CSS anchor positioning so they can be used together. |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Fix the backlinks to the attribute definitions, which has the effect of causing the attribute definitions to show up in the input and button element definitions. (The newlines here are, unfortunately, important.)Also make popovertarget use the same "ID*" value space as other ID-accepting elements, as noted in#9144 (comment).
davatron5000 commentedSep 26, 2024
Looped in by@chrisdholt, I was working on an anchored tooltip this week and have a reduced example. Given the DOM structure .... <buttonid="anchor"popovertarget="tooltip">Text</button><tool-tipid="tooltip"popover>Content</tool-tip> The following CSS works in Light DOM... <style>#anchor {anchor-name:--my-name; }#tool-tip {position-anchor:--my-name;bottom:anchor(--my-name, top); }</style> But moving that into the Shadow DOM doesn't work. <style>#anchor {anchor-name:--my-name; }</style><buttonid="anchor"popovertarget="tooltip">Text</button><tool-tipid="tooltip"popover><templateshadowrootmode="open"><style>:host { position-anchor:--my-name; bottom: anchor(--my-name,top); }</style><slot></slot></template> Content</tool-tip> The "CSS ref" to An |
Ahh - thanks for the clarification. Note thatfinding an anchor says:
and also this:
So in your example, you'd have to position the tooltip using your first ("working") CSS, where you are anchoring in the light DOM, and not the one where you set Also note that last sentence, which alludes strongly tothis issue about the |
This includes two related changes: 1. The `showPopover()` and `togglePopover()` methods now include an options bag that allows setting the popover invoker. 2. Popover invokers (declaratively or imperatively set) now create an implicit anchor reference for that popover.This new behavior was resolved in the [WHATWG/CSSWG/OpenUI joint taskforce meeting on June 26, 2024](whatwg#9144 (comment)).Closeswhatwg#10442Closeswhatwg#10675
This includes two related changes: 1. The `showPopover()` and `togglePopover()` methods now include an options bag that allows setting the popover invoker. 2. Popover invokers (declaratively or imperatively set) now create an implicit anchor reference for that popover.This new behavior was resolved in the [WHATWG/CSSWG/OpenUI joint taskforce meeting on June 26, 2024](whatwg#9144 (comment)).Closeswhatwg#10442Closeswhatwg#10675
This includes two related changes:1. The showPopover() and togglePopover() methods now include an options bag that allows setting the popover source.2. Popover sources (declaratively or imperatively set) now create an implicit anchor reference for that popover.See discussion in#9144 (comment).Closes#10442.Closes#10675.
amn commentedJan 4, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I agree that in its currently proposed form, the For what it is worth, and I am sure this has been mentioned already, I for one wouldn't necessarily object to a means of associating popover elements with some other element(s), since semantics of a popover may in the very least optionally permit it to relate to some element. For instance, form elements present what is essentially a popover element, to communicate e.g. validation errors, and said popover element would then naturally be related to the form control being validated. In fact, one could make the case that the association of a popover element with some other element is implicit, even if one is not specified, in which case the popover is associated with the entire document body. Which leads me to preliminarily conclude that there could be made a case forsome HTML attribute to associate a popover element with another element. If the element related to a popover element, were to be removed [from the document], for instance, then it would by default remove (or at least hide) the popover element, such is the nature of the association proposed -- regardless of whether the popover element is in the other element's tree. For instance, there may be a popover element related to an entire Conclusively, |
This includes two related changes:1. The showPopover() and togglePopover() methods now include an options bag that allows setting the popover source.2. Popover sources (declaratively or imperatively set) now create an implicit anchor reference for that popover.See discussion inwhatwg#9144 (comment).Closeswhatwg#10442.Closeswhatwg#10675.
This comment was marked as off-topic.
This comment was marked as off-topic.
Jxck commentedJun 13, 2025
Does creating custom ident dynamically via |
No, using |
Make test using it tentative, and remove the use where not needed.Seeweb-platform-tests/wpt#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>Commit-Queue: Rune Lillesveen <futhark@chromium.org>Auto-Submit: Rune Lillesveen <futhark@chromium.org>Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org>Cr-Commit-Position: refs/heads/main@{#1474181}
Make test using it tentative, and remove the use where not needed.See#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>Commit-Queue: Rune Lillesveen <futhark@chromium.org>Auto-Submit: Rune Lillesveen <futhark@chromium.org>Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org>Cr-Commit-Position: refs/heads/main@{#1474181}
Make test using it tentative, and remove the use where not needed.See#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>Commit-Queue: Rune Lillesveen <futhark@chromium.org>Auto-Submit: Rune Lillesveen <futhark@chromium.org>Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org>Cr-Commit-Position: refs/heads/main@{#1474181}
…], a=testonlyAutomatic update from web-platform-testsHTML anchor attribute is not in a spec[1]Make test using it tentative, and remove the use where not needed.Seeweb-platform-tests/wpt#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>Commit-Queue: Rune Lillesveen <futhark@chromium.org>Auto-Submit: Rune Lillesveen <futhark@chromium.org>Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org>Cr-Commit-Position: refs/heads/main@{#1474181}--wpt-commits: 5a46d0ec81d0a67de1f697d405565abec5f89227wpt-pr: 53169
…], a=testonlyAutomatic update from web-platform-testsHTML anchor attribute is not in a spec[1]Make test using it tentative, and remove the use where not needed.Seeweb-platform-tests/wpt#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>Commit-Queue: Rune Lillesveen <futhark@chromium.org>Auto-Submit: Rune Lillesveen <futhark@chromium.org>Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org>Cr-Commit-Position: refs/heads/main@{#1474181}--wpt-commits: 5a46d0ec81d0a67de1f697d405565abec5f89227wpt-pr: 53169
…], a=testonlyAutomatic update from web-platform-testsHTML anchor attribute is not in a spec[1]Make test using it tentative, and remove the use where not needed.Seeweb-platform-tests/wpt#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>Commit-Queue: Rune Lillesveen <futhark@chromium.org>Auto-Submit: Rune Lillesveen <futhark@chromium.org>Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org>Cr-Commit-Position: refs/heads/main@{#1474181}--wpt-commits: 5a46d0ec81d0a67de1f697d405565abec5f89227wpt-pr: 53169
…], a=testonlyAutomatic update from web-platform-testsHTML anchor attribute is not in a spec[1]Make test using it tentative, and remove the use where not needed.Seeweb-platform-tests/wpt#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruudchromium.org>Commit-Queue: Rune Lillesveen <futharkchromium.org>Auto-Submit: Rune Lillesveen <futharkchromium.org>Commit-Queue: Anders Hartvoll Ruud <andruudchromium.org>Cr-Commit-Position: refs/heads/main{#1474181}--wpt-commits: 5a46d0ec81d0a67de1f697d405565abec5f89227wpt-pr: 53169UltraBlame original commit: 7fd904d7332d63f49232d48cf85ac3c988c1354e
…], a=testonlyAutomatic update from web-platform-testsHTML anchor attribute is not in a spec[1]Make test using it tentative, and remove the use where not needed.Seeweb-platform-tests/wpt#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruudchromium.org>Commit-Queue: Rune Lillesveen <futharkchromium.org>Auto-Submit: Rune Lillesveen <futharkchromium.org>Commit-Queue: Anders Hartvoll Ruud <andruudchromium.org>Cr-Commit-Position: refs/heads/main{#1474181}--wpt-commits: 5a46d0ec81d0a67de1f697d405565abec5f89227wpt-pr: 53169UltraBlame original commit: 7fd904d7332d63f49232d48cf85ac3c988c1354e
…], a=testonlyAutomatic update from web-platform-testsHTML anchor attribute is not in a spec[1]Make test using it tentative, and remove the use where not needed.Seeweb-platform-tests/wpt#53140[1]whatwg/html#9144Change-Id: I78d574cfe33c84031d067c308bfb364e56ba20e5Reviewed-on:https://chromium-review.googlesource.com/c/chromium/src/+/6646507Reviewed-by: Anders Hartvoll Ruud <andruudchromium.org>Commit-Queue: Rune Lillesveen <futharkchromium.org>Auto-Submit: Rune Lillesveen <futharkchromium.org>Commit-Queue: Anders Hartvoll Ruud <andruudchromium.org>Cr-Commit-Position: refs/heads/main{#1474181}--wpt-commits: 5a46d0ec81d0a67de1f697d405565abec5f89227wpt-pr: 53169UltraBlame original commit: 7fd904d7332d63f49232d48cf85ac3c988c1354e
Uh oh!
There was an error while loading.Please reload this page.
The anchor attribute can be used to set up CSS anchor positioning by setting an implicit anchor element:https://drafts.csswg.org/css-anchor-1/#implicit-anchor-element.
The CSS properties used to set up anchor positioning relationships are perfect for repeating patterns, such as:
However, for structural patterns, such as when using a Popover, an HTML attribute has less boilerplate and makes the relationship much more directly observable:
This structural pattern can apply to other use cases also, where unique elements are paired.
When used with the Popover API, the
anchor
attribute also naturally helps to create a relationship that ensures popovers are properly nested:This PR adds the
anchor
attribute to HTML and connects it to the Popover API./dom.html (diff )
/index.html (diff )
/indices.html (diff )
/infrastructure.html (diff )
/popover.html (diff )
/references.html (diff )
/rendering.html (diff )