Anchor Positioning
ツールチップやポップオーバーの位置をJavaScriptで計算する必要があった問題を解消する。anchor-name で基準要素を定義し、position-anchor で紐付けるだけで、CSSだけでアンカーに追従する配置が実現できる。
概要
ツールチップやポップオーバーの位置をJavaScriptで計算する必要があった問題を解消する。anchor-name で基準要素を定義し、position-anchor で紐付けるだけで、CSSだけでアンカーに追従する配置が実現できる。
対応ブラウザ
デスクトップ
Chrome 未対応
Edge 未対応
Safari 未対応
Firefox 未対応
基本構文
CSS
.button {
anchor-name: --my-button;
}
.tooltip {
position: absolute;
position-anchor: --my-button;
top: anchor(bottom);
left: anchor(center);
translate: -50% 0;
} 実務での使いどころ
-
ツールチップ
ボタンやアイコンに追従するツールチップをJSなしで実装。スクロールしても追従する。
-
コンテキストメニュー
右クリックメニューやドロップダウンを、トリガー要素に対して相対的に配置できる。
注意点
- Firefox が未対応。Firefox ユーザーへのフォールバックが必須。
- 仕様がまだ変更される可能性がある。
フォールバック戦略
CSS
@supports not (anchor-name: --x) {
.tooltip { display: none; }
.tooltip.is-visible { display: block; }
} アクセシビリティ
- ツールチップは role="tooltip" と aria-describedby で紐付ける。
- キーボードフォーカス時にも表示されるよう :focus-visible にも対応する。