表示例
アイコン: Font Awesome 7 Free(fa-solid / fa-regular)
別名・英語表記
- FAB
- 追従ボタン
- 浮遊ボタン
- 丸い追加ボタン
- 右下に浮く丸ボタン
- 浮いているボタン
- Floating action button
実装例
<div class="x-fab">
<span class="x-fab__stage">
<button class="x-fab__b" type="button" aria-label="新しいメモを作成">
<i class="fa-solid fa-plus" aria-hidden="true"></i>
</button>
</span>
</div>
/* 貼った先のリセットに頼らないよう、この部品の中だけ border-box にする */
.x-fab,
.x-fab *:not([class*="fa-"]),
.x-fab *:not([class*="fa-"])::before,
.x-fab *:not([class*="fa-"])::after {
box-sizing: border-box;
/* 貼った先の既定の書体に引きずられないようにする。書体が変わると
文字の幅と高さが変わり、枠のサイズまでずれる */
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans", "Noto Sans JP", "Yu Gothic UI", Meiryo, sans-serif;
}
.x-fab__stage {
position: relative;
display: block;
width: 190px;
height: 104px;
border: 1px solid #e3e6ea;
border-radius: 10px;
background: #fff;
}
.x-fab__b {
position: absolute;
right: 12px;
bottom: 12px;
width: 56px;
height: 56px;
display: grid;
place-items: center;
border: 0;
border-radius: 50%;
background: #1d4ed8;
color: #fff;
font-size: 18px;
cursor: pointer;
}
.x-fab__b:hover {
background: #1b45bd;
}
.x-fab__b:focus-visible {
outline: 2px solid #1b2028;
outline-offset: 3px;
}
AIへの指示文
「フローティングアクションボタン(Floating action button)」を実装してください。
## これは何か
画面の隅に浮かせて常に見せておく丸いボタン。新規作成など、その画面で最も使う操作を1つだけ置く。
## 使いどころ
- 一覧画面で「新規作成」のように、どこを見ていても使う操作が1つあるとき
- スマートフォンで、親指の届く範囲に主要操作を置きたいとき
## 実装の要件
- position: fixed で隅に置く。z-index は他の追従要素と衝突しない値にする
- 直径 56px 目安。影ではなく濃い単色で浮きを表現する
- 本文の末尾やフッターのリンクに重なって、押せなくする事故が起きやすい。本文側に下余白を足す
- 2つ以上置かない。浮いているボタンが増えると、どれも目立たなくなる
- アイコンだけでは何が起きるか伝わらないことが多い。初回だけラベルを出す形も検討する
## アクセシビリティの要件
- aria-label で操作名を付ける。アイコンは aria-hidden="true"
- 固定表示はキーボードのタブ順から外れて見つけにくい。DOM 上の位置を意識して置く
- 下端の安全領域(env(safe-area-inset-bottom))を見込んで余白を取る
## 参考にする実装
この形を出発点にして、プロジェクトの命名規則・色・余白に合わせて調整してください。
```html
<div class="x-fab">
<span class="x-fab__stage">
<button class="x-fab__b" type="button" aria-label="新しいメモを作成">
<i class="fa-solid fa-plus" aria-hidden="true"></i>
</button>
</span>
</div>
```
```css
/* 貼った先のリセットに頼らないよう、この部品の中だけ border-box にする */
.x-fab,
.x-fab *:not([class*="fa-"]),
.x-fab *:not([class*="fa-"])::before,
.x-fab *:not([class*="fa-"])::after {
box-sizing: border-box;
/* 貼った先の既定の書体に引きずられないようにする。書体が変わると
文字の幅と高さが変わり、枠のサイズまでずれる */
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans", "Noto Sans JP", "Yu Gothic UI", Meiryo, sans-serif;
}
.x-fab__stage {
position: relative;
display: block;
width: 190px;
height: 104px;
border: 1px solid #e3e6ea;
border-radius: 10px;
background: #fff;
}
.x-fab__b {
position: absolute;
right: 12px;
bottom: 12px;
width: 56px;
height: 56px;
display: grid;
place-items: center;
border: 0;
border-radius: 50%;
background: #1d4ed8;
color: #fff;
font-size: 18px;
cursor: pointer;
}
.x-fab__b:hover {
background: #1b45bd;
}
.x-fab__b:focus-visible {
outline: 2px solid #1b2028;
outline-offset: 3px;
}
```
## 出力の約束
- HTML と CSS を分けて出す。JavaScript が要るときは素の JavaScript で書き、UIフレームワークは使わない。
- 参考実装がアイコンに Font Awesome のクラスを使っている場合は、プロジェクトで使っているアイコンかインライン SVG に置き換えてよい。
- 上のアクセシビリティ要件を満たす。満たせない箇所があるときは、理由を添えて先に知らせる。
- 色・角丸・余白は既存のデザイントークンがあればそれを使う。無ければ CSS 変数として切り出す。
使いどころ
- 一覧画面で「新規作成」のように、どこを見ていても使う操作が1つあるとき
- スマートフォンで、親指の届く範囲に主要操作を置きたいとき
注意点
- 本文の末尾やフッターのリンクに重なって、押せなくする事故が起きやすい。本文側に下余白を足す
- 2つ以上置かない。浮いているボタンが増えると、どれも目立たなくなる
- アイコンだけでは何が起きるか伝わらないことが多い。初回だけラベルを出す形も検討する
アクセシビリティの要点
- aria-label で操作名を付ける。アイコンは aria-hidden="true"
- 固定表示はキーボードのタブ順から外れて見つけにくい。DOM 上の位置を意識して置く
- 下端の安全領域(env(safe-area-inset-bottom))を見込んで余白を取る