テック技報最新号へ →
CSS

アイコンより大きいヒットエリアを ::after で確保する

見た目は 16px のまま、::after で見えない 44px のタップ領域を広げて押しやすくする。

@sanyampunia · 2026-10-10
#アクセシビリティ#ヒットエリア#疑似要素#UI

どんな時に使う?

ツールバーやカード上の小さなアイコンボタンが押しにくいとき。見た目の余白は詰めたまま、モバイルの推奨タップサイズ(おおよそ 44×44px)だけ確保したい場合に便利。

コード

css
.icon-button {
  position: relative;
  /* 見た目のアイコンサイズ例: 16×16 */
  width: 16px;
  height: 16px;
}

.icon-button::after {
  content: "";
  position: absolute;
  /* (44 - 16) / 2 = 14 → 各方向に 14px 伸ばす */
  inset: -14px;
}
  • ::after は透明なまま重なるので見た目は変わらないが、クリック/タップの当たり判定は広がる。
  • inset の代わりに top/left/width/height で中央 44px の箱を置いても同じ。

注意点・対応状況

  • 広げすぎると隣のボタンとヒット領域が重なる。アイコン間隔が狭い UI では実測して調整する。
  • キーボード操作ではフォーカスリングが元の要素サイズ基準になることがある。:focus-visible のアウトラインも合わせて確認する。
  • 疑似要素でなく padding を増やす手もあるが、レイアウトに余白が乗る。見た目を崩したくないときだけ ::after が向く。

出典

X の元の投稿を開く