コンテンツにスキップ

メニューバー

hc-menubar はデスクトップアプリケーションのメニューバー パターンです: メニューボタン(File / Edit / View …)の水平の列で、 それぞれが hc-menu の ドロップダウンを開きます。既存のメニュー機構の上の薄い層です — installMenu() がドロップダウンの内部(ARIA、メニュー内キーボード、 サブメニュー)を所有し、installMenubar() がバーのナビゲーションを 足します。

別名: アプリケーションメニュー。

プリミティブ必要バージョン
HTML popoverChrome 114、Edge 114、Firefox 125、Safari 17
CSS Anchor PositioningChrome 125、Edge 125、Firefox 147、Safari 26

ドロップダウンは普通の hc-menu ポップオーバーなので、Anchor Positioning がない場合は installMenu()getBoundingClientRect による配置にフォールバックします — popover がサポートされる環境なら どこでも、メニューは正しく開き、閉じ、振る舞います。

import { installMenu, installMenubar } from '@hypermedia-components/core';
installMenu(); // dropdown internals
installMenubar(); // the bar navigation

installMenubar() は冪等で、アンインストーラを返します (installMenu() も同様です)。ゼロ設定の @hypermedia-components/core/behaviors エントリが両方を自動インストールし、 htmx でスワップされた内容も自動で拾います。

各トップボタンは、popovertarget で自身のドロップダウンを指す role="menuitem" です。ドロップダウンは普通の hc-menu ポップオーバー です(そのためサブメニュー、チェックボックス / ラジオ項目、 hc:menuselect イベントが無料で付いてきます)。

キー動作
/ トップ項目間を移動(RTL でミラー)。両端でラップ。
Home / End最初 / 最後のトップ項目。
/ Enter / Spaceフォーカス中のメニューを開く(↓ は最初の項目にフォーカス)。
フォーカス中のメニューを最後の項目で開く。
/ (メニュー展開中)隣のメニューへ切り替えて開く。
Escメニューを閉じ、フォーカスをトップ項目へ返す。

サブメニューの親は引き続き でサブメニューを開きます(メニューバーは サブメニュー機構に譲ります)。入れ子のメニューも機能し続けます。

  • バーは aria-label つきの role="menubar" です。各トップボタンは role="menuitem" で、installMenu()aria-haspopup="menu" / aria-expanded を配線します。
  • バーは単一の Tab ストップ(ロービングタブインデックス)です。 矢印キーがその中を移動し、WAI-ARIA APG のメニューバーパターンに 一致します。
  • 各ドロップダウンにラベルを付けてください(ボタンを指す aria-labelledby、または aria-label)。開いたメニューが アクセシブルな名前を持つようにするためです。
トークンパス用途
menubar.gapトップ項目間のギャップ。
menubar.padding-x / -yバーのパディング。
menubar.bgバーの背景。
menubar.borderバーの枠線。
menubar.radiusバーの角丸。
menubar.item-padding-x / -yトップ項目のパディング。
menubar.item-radiusトップ項目の角丸。
menubar.item-fgトップ項目のテキスト色。
menubar.item-hover-bgトップ項目のホバー / 展開時の背景。
生成される CSS 変数を表示
--hc-menubar-gap | -padding-x | -padding-y | -bg | -border | -radius
--hc-menubar-item-padding-x | -item-padding-y | -item-radius | -item-fg | -item-hover-bg
  • メニュー — 各トップ項目が 開くドロップダウン(とサブメニューパターン)。
  • ツールバー — (メニューではなく)コントロールのロービングタブインデックスの列。