ツールチップのz-indexベストプラクティス
コンテキストに関係なくすべてのUI要素の上に表示されるツールチップのz-index値の割り当て方法とポータル戦略。
Best Practices
詳細な説明
ツールチップのz-index戦略
ツールチップはページ上のほぼすべての上に表示される必要があります。簡潔でコンテキスト依存のため、他のUIレイヤーによってクリップされたり隠されたりしてはいけません。z-indexスケールで最も高い値が必要です。
z-index階層での位置
:root {
--z-dropdown: 1000;
--z-sticky: 1020;
--z-overlay: 1040;
--z-modal: 1050;
--z-popover: 1060;
--z-toast: 1080;
--z-tooltip: 1090; /* 最高レイヤー */
}
ポータルベースのツールチップ
ツールチップがすべてのコンテンツの上に確実に表示されるようにするには、document.bodyの子としてレンダリングします。
ツールチップライブラリとz-index
| ライブラリ | デフォルトz-index | 設定可能? |
|---|---|---|
| Tippy.js | 9999 | はい、zIndex propで |
| Floating UI | auto | はい、styleで |
| Radix Tooltip | (portal) | はい、CSSで |
| MUI Tooltip | 1500 | テーマで |
重要な考慮事項
- 常にポータルを使用:スタッキングコンテキストの罠を避けるためbodyレベルでツールチップをレンダリング
- pointer-events: noneを使用:ツールチップは下の要素とのインタラクションをブロックしない
- タッチデバイスを考慮:ホバートリガーのツールチップにはタップで表示する代替手段が必要
- アクセシビリティ:スクリーンリーダー向けに
role="tooltip"とaria-describedbyを使用
ユースケース
複雑なWebアプリケーションで、モーダル、ポップオーバーメニュー、トースト通知を含むすべてのUI要素の上にツールチップを表示する必要がある場合。