Sparkle Design

Button

ボタンはフォームの送信、ダイアログの展開、アクションのキャンセル、削除の実行など、アクションやイベントのトリガーとして使用するコンポーネントです。

Button の概要図

Anatomy: 解剖図

ItemNameDescriptionComponentOptional
1ContainerHTML Button エレメント—
2Iconラベルの前 (leading) に配置するアイコン要素Icon任意
3Labelボタンにコンテキストを付与するためのテキスト要素—
4Iconラベルの後 (trailing) に配置するアイコン要素Icon任意

Options: 選択肢

Size

sm

通常よりも小さなサイズです。限られたスペースにボタンを配置する場合かつアクションの重要性が低い場合に使用します。

md (default)

ボタンのデフォルトのサイズです。ノーマルが最も使用されるサイズです。他のサイズのボタンはノーマルを基準に重要度に応じて使用します。

lg

大きなボタンはアクションの重要性を高めるため、使用は極力控えてください。

Variant

Solid

背景色が付与されているスタイルです。全てのスタイルの中で最も目立つように設計されています。

画面内で最も重要なアクションに使用します。そのため、Solidスタイルのボタンは同一のビュー内でThemeごとに1回までの使用を推奨します。

Outline

枠線が付与されているスタイルのボタンです。中程度の強調度を持ち、主に副次的なアクションに使用します。

Ghost

背景、枠線がなく、テキストのみの最も控えめなボタンです。主に補助的で軽微なアクションや、コンポーネントの中で使用する場合に適しています。

Theme

Primary

体験における必要不可欠なタスクを実行するためのボタンのカラースタイルです。重要なアクションを目立たせる役割があります。

Neutral

デフォルトのカラースタイルです。
視覚的・意味的に中立なアクションを担います。

Negative

破壊的なアクションや、ネガティブな結果をもたらす可能性があるアクションを強調するためのスタイルです。

実行することでユーザーのデータが失われる場合などに使用します。

Variantはユーザーへの破壊的影響の大きさに応じて選択してください。

Icon

Prefix Icon

ボタンのアクション(機能)を修飾するためのアイコンエリアです。ラベルだけでアクションの内容を伝えることができない場合に使用します。

テキストラベルのみでアクションを伝えることができる場合はアイコンは使用しません。

Suffix Icon

ドロップダウン形式のメニューのように、ボタンを押下した後に発生するインタラクションを伝えるためのアイコンエリアです。

States: 状態

Enable

ユーザーがボタンを操作する前のデフォルトの状態。

Hover状態のButton。Enable状態よりも濃い青色を基調としたSolidのボタンです。

Hover

ユーザーがボタンにマウスオーバーしている状態。

Active状態のButton。Hover状態よりも濃い青色を基調としたSolidのボタンです。

Active

ユーザーがボタンを操作している状態。

Focus状態のButton。Containerの外側に青い枠線が表示されています。

Focus

ユーザーがタッチ操作や、キーボードや音声による操作を用いてボタンに注視している状態。

Disabled

システムによってボタンが非活性化されている状態。ユーザーによる操作は不能です。

Loading

ボタンの押下によって実行されたアクションが進行中であることをユーザーに提示している状態。

Behaviors: 振る舞い

固定幅と全幅

ボタンの幅は初期状態ではテキスト量に合わせて自動的に可変します。

オプションとして、固定幅と全幅のいずれかにすることができます。全幅はコンテナサイズに合わせてボタンのサイズが可変します。

Note
小さい画面サイズやコンテナサイズの中では全幅のボタンを使用してください。
Buttonの幅オプションを示す図。「保存」はテキスト量に応じて幅が可変するボタン、「新規作成」は固定幅のボタン、「メールを送信」はコンテナサイズに合わせて全幅となる3つのボタンを示しています。

最小幅

ボタンの最小幅はボタンの高さの2倍の値です。最小幅が存在することで、小さなボタンや文字量が少ないボタンでもユーザーが適切に視認することをサポートします。

Buttonの最小幅を示す図。「送信」というラベルが配置されます。

遅延処理

ボタンのサブミット後はステートをローディング状態に変更します。

一方でサブミット処理が早急に完了する場合も多くあります。その場合はボタンはわずかな時間だけローディング状態となるため、結果としてボタンがチラついて表示されます。この現象 (フリッキング) はユーザーに強い不快感を与えてしまいます。

このフリッキングを回避するため、サブミットしてからローディング状態へ移行するまでに1秒間の遅延を発生させます。この遅延している間、ボタンはインタラクティブイベントには視覚的に反応しますが、追加のクリックイベントは発生しません。

また、この処理によって複数回の送信が行われることも回避します。

Buttonの遅延処理を示す図。左側に「送信」Solidボタンとその下に「0 Sec.」を表示、右側にLoading状態のSolidボタンとその下に「1 Sec.」の表示がされます。

Metrics: 寸法

sm

  • Vertical Resizing: Hug
  • Horizontal Resizing: Hug
  • Container Height: 32px
  • Item Spacing: 8px
  • Padding Vertical: 4px
  • Padding Horizontal: 10px
smサイズの寸法仕様を示す図。

md

  • Vertical Resizing: Hug
  • Horizontal Resizing: Hug
  • Container Height: 40px
  • Item Spacing: 8px
  • Padding Vertical: 4px
  • Padding Horizontal: 10px
mdサイズの寸法仕様を示す図。

lg

  • Vertical Resizing: Hug
  • Horizontal Resizing: Hug
  • Container Height: 48px
  • Horizontal Gap: 8px
  • Horizontal Padding: 12px
  • Vertical Padding: 8px
lgサイズの寸法仕様を示す図。

Usage: 使い方

Do

PrimaryのSolidボタンはビューの中で1回だけ使用します。

Don’t

PrimaryのSolidボタンをビューの中で複数回使用しないでください。メインのトリガー以外はOutlineやGhostボタンを使用してください。

Do

PrimaryのSolidボタンはボタングループの末尾に配置してください。末尾に配置することで、ユーザーは全てのトリガーを確認した上でメインのアクションを実行することができます。

Don’t

PrimaryのSolidボタンは、ボタングループの先頭や中間には配置しないでください。

Don’t

サブミットを行うための条件が満たされていないことやエラーが発生していることをユーザーに明示する目的でボタンをDisabled状態にしないでください。常にボタンを押下できるようにし、不備やエラー発生している場合は該当箇所を直接明示します。

Contents: 内容

Do

ボタンのラベルは改行せずに簡潔に記述してください。

不適切なラベルの例。「メールグループを作成」というラベルが2行に改行されて表示されているボタンです。
Don’t

ボタンのラベルは改行せずに記述してください。複数行になった場合はラベルを再検討してください。

Do

ボタンのラベルはテキストだけで表現します。句読点や余分な装飾は付けません。

Don’t

ブランドのトーンやパーソナリティを参考に、簡潔なラベルを付けてください。絵文字や感嘆符はボタンの機能を伝えることに適していません。

Do

ボタンのラベルにはユーザーが実行するアクション (動詞) を反映します。

Don’t

ボタンのラベルを名詞や形容詞のみで表さないでください。動詞がないラベルはアクションが不明確でユーザーの誤操作を招きます。

References: 参考文献

OK-Cancel or Cancel-OK? The Trouble With ButtonsShould the OK button come before or after the Cancel button? Following platform conventions is more important than optimizing an individual dialog box.www.nngroup.com

Change log: 変更履歴

DateChanges
2025/4/18Figma・ドキュメントをアップデート
2023/12/21ドキュメントを公開
2023/10/14Figmaを公開
小さな気づきや違和感があれば、お気軽に教えてください。
フィードバック
Chat illustration