FAB

フローティングアクションボタン

プレビュー

使いどころ

使う場面

  • 画面の主役になる操作を 1 つだけ、スクロールしても常に押せる位置に置く(新規作成、メッセージ作成など)
  • モバイルの一覧画面や、キャンバス上で追加操作が必要な画面
  • ラベルが要る場合は extended で、アイコンと文言を並べる

使わない場面

  • 操作が複数ある画面。FAB は 1 画面に 1 つまで。ほかの操作は Button や Dropdown にまとめる
  • フォームの送信や保存。フォームの末尾に Button の primary を置く
  • ページ内の通常の導線。Button を使う。FAB は position: fixed で画面に固定されるので、本文の流れの中には置けない

使い方

<FAB label="追加">
  <PlusIcon />
</FAB>

プロパティ

名前型デフォルト説明
label必須stringなしボタンのアクセシブルラベル(必須)
variant"primary" | "secondary""primary"スタイルバリアント
size"sm" | "md" | "lg""md"ボタンのサイズ
position"bottom-right" | "bottom-left" | "top-right" | "top-left""bottom-right"配置位置
extendedbooleanfalseラベルテキストを表示するかどうか
asChildbooleanなし子要素にスタイルと振る舞いを委ねる(Next.js の Link など)

型と必須かどうかはソースの型定義から自動で生成しています。表にない HTML 標準の属性(className や aria-* など)も、ルート要素にそのまま渡せます。

キーボード操作

キー動作
TabFAB にフォーカスを移す
Enter / SpaceFAB を押す

アクセシビリティ

  • label は必須。extended でないときは aria-label になり、extended のときは見えているラベル文言が名前になる
  • disabled のときは aria-disabled も付く。asChild でリンクにした場合は、属性の代わりにクリックを止める
  • 固定表示なので、末尾の項目やフッターを隠さないよう、スクロール領域の下に余白を取る

文言

  • 「新規作成」「メッセージを書く」のように、押すと何が起きるかを動詞で書く。アイコンだけの FAB でも label に同じ文言を入れる

関連するコンポーネント