Skip to content

IconButton ​

アイコンだけで操作を表します。

いつ使うか ​

アイコンだけで意味が通り、場所が狭いときに使います。 ツールバー、カードの右上、一覧の各行が該当します。

意味が一目で伝わらないアイコンには使わないでください。 文字を添えた Button のほうが速く理解されます。

例 ​

基本 ​

アイコン自体には意味が伝わる名前がありません。 aria-label を必ず与えてください。

html
<button type="button" class="jumpu-icon-button" aria-label="Twitter">
  <i class="fab fa-twitter"></i>
</button>
<button type="button" class="jumpu-icon-button" aria-label="メール">
  <i class="fas fa-envelope"></i>
</button>
<button type="button" class="jumpu-icon-button" aria-label="ホーム">
  <i class="fas fa-home"></i>
</button>

ツールチップをつける ​

role="tooltip" を持つ要素を入れ、aria-describedby で参照します。

html
<button
  type="button"
  class="jumpu-icon-button"
  aria-describedby="tooltip-Twitter"
>
  <i class="fab fa-twitter"></i>
  <span id="tooltip-Twitter" role="tooltip">Twitter</span>
</button>
<button
  type="button"
  class="jumpu-icon-button"
  aria-describedby="tooltip-envelope"
>
  <i class="fas fa-envelope"></i>
  <span id="tooltip-envelope" role="tooltip">メール</span>
</button>

aria-describedby の値と id は必ず一致させてください。

リンクとして使う ​

html
<a href="#" class="jumpu-icon-button" aria-describedby="tooltip-anchor-Twitter">
  <i class="fab fa-twitter"></i>
  <span id="tooltip-anchor-Twitter" role="tooltip">Twitter</span>
</a>
<a href="#" class="jumpu-icon-button" aria-describedby="tooltip-anchor-home">
  <i class="fas fa-home"></i>
  <span id="tooltip-anchor-home" role="tooltip">ホーム</span>
</a>

ツールチップの位置を変える ​

位置は transform で決まっています。 変えるには Arbitrary Values で transform を上書きし、group-hover: で表示時の値も指定します。

html
<button
  type="button"
  class="jumpu-icon-button group"
  aria-describedby="tooltip-position-envelope"
>
  <i class="fas fa-envelope"></i>
  <span
    id="tooltip-position-envelope"
    role="tooltip"
    class="![transform:translateX(50%)_scale(0)] group-hover:![transform:translateX(50%)_scale(1)]"
    >右に出す</span
  >
</button>
<button
  type="button"
  class="jumpu-icon-button group z-1"
  aria-describedby="tooltip-position-home"
>
  <i class="fas fa-home"></i>
  <span
    id="tooltip-position-home"
    role="tooltip"
    class="![transform:translate(-50%,_150%)_scale(0)] group-hover:![transform:translate(-50%,_150%)_scale(1)]"
    >下に出す</span
  >
</button>

ユーティリティによる調整 ​

調整したいこと書き方備考
大きさw-12 h-12既定は w-8 h-8 相当。文字サイズには追従しません
アイコンの大きさtext-lg などボタンの大きさは変わりません
ツールチップの位置![transform:…] と group-hover:![transform:…]上の例を参照

マークアップ規約 ​

位置要素 / 属性要否効果
ルートbutton / a / [role="button"] のいずれか必須
ルートclass="jumpu-icon-button"必須正方形になります
ルートaria-label または aria-describedby必須どちらかで名前を与えます
子孫アイコンの要素必須
子孫[role="tooltip"] + id任意ツールチップになります

状態 ​

状態見た目発火条件
ホバー文字が gray-800、背景が gray-50 になる:hover
ホバーツールチップが 100ms で現れる:hover
アクティブ背景が gray-200 になる:active
フォーカスブラウザの既定:focus

アクセシビリティ ​

ツールチップは APG の Tooltip パターンを対象としていますが、逸脱があります。

IMPORTANT

ツールチップは :hover でのみ表示されます。 キーボードでフォーカスしても表示されません。 aria-describedby で参照しているため支援技術には伝わりますが、目で見て操作する利用者には届きません。

ツールチップだけに頼らず、aria-label でも名前を与えてください。