Components
Anchor
A structural primitive to enable CSS Anchor Positioning on stuff.
Full support Supported since v144. Full support Supported since v149. Partial support
Missing:
popover-hint.
Always Visible
Floating content that is always shown.
Floating content
---import { Anchor } from "@opui/astro"---
<Anchor> <button>Hover me</button> <span slot="anchored" style="background: var(--surface-2); padding: var(--size-2) var(--size-3); border-radius: var(--radius-2); box-shadow: var(--shadow-3);" >Floating content</span ></Anchor><span class="ui-anchor" style=""> <button>Hover me</button> <span class="ui-anchor-floating"> <span style=" background: var(--surface-2); padding: var(--size-2) var(--size-3); border-radius: var(--radius-2); box-shadow: var(--shadow-3); " >Floating content</span > </span></span>Hover Trigger
Set trigger="hover". The component adds interestfor and popover="hint" declaratively.
Add interestfor, commandfor, and command="toggle-popover" to the anchor trigger so touch devices can tap to show the floating content.
Tooltip content
---import { Anchor, Button } from "@opui/astro"---
<Anchor trigger="hover" id="anchor-hover"> <Button interestfor="anchor-hover" commandfor="anchor-hover" command="toggle-popover">Hover me</Button > <span slot="anchored" ><div class="ui-card ui-elevated">Tooltip content</div></span ></Anchor><span class="ui-anchor" style=""> <span interestfor="anchor-hover"> <button interestfor="anchor-hover" commandfor="anchor-hover" command="toggle-popover" class="ui-button" > Hover me </button> </span> <span class="ui-anchor-floating" id="anchor-hover" popover="hint"> <span><div class="ui-card ui-elevated">Tooltip content</div></span> </span></span>Used By
API
| Prop | Type | Default | Description |
|---|---|---|---|
alignment | string | "start end" | Any valid position-area value. Controls where the floating content
is placed. |
trigger | "always" | "hover" | "always" | When set to "hover", wraps the anchor slot in an
interestfor invoker and uses popover="hint" on the
floating element. |
Browser support
Full support Supported since v144. Full support Supported since v149. Partial support
Missing:
popover-hint.
See also the full browser support guide.
Installation
@layer components.root { :where(.ui-anchor) { anchor-name: --anchor; anchor-scope: --anchor; display: inline-block; inline-size: fit-content;
/* Always-visible */ & > .ui-anchor-floating:not([popover]) { block-size: max-content; inline-size: max-content; position: absolute; position-anchor: --anchor; position-area: var(--anchor-position-area, start end); translate: var(--_anchor-tx, 0) var(--_anchor-ty, 0); }
/* Hover-triggered */ & > .ui-anchor-floating[popover] { inset: unset; margin: 0; position: absolute; position-area: var(--anchor-position-area, start end); translate: var(--_anchor-tx, 0) var(--_anchor-ty, 0); } }}