本文へスキップ

文字サイズ切替

小/標準/大で html の font-size を変える。rem で組んだカードは余白・幅・ボタンごと追従し、px で書いた注記だけ取り残されるのが見える。

ENGLISH

Font Size Switcher (rem)

  • JS
約101行基本のUI部品 / アクセシブルUI の一覧 →

プレビュー

クリック

操作クリック/タップで動きます。

仕様書

向く場面
  • サイト内で文字サイズを 3 段階に変える設定
  • rem で組んだ部品が追従するかの確認
  • px 固定の取り残しを可視化したい場面
避ける場面
  • 要素ごとに JS で拡大する
  • 余白や幅を px 固定のままにする
  • html 以外に font-size を当てる
構成要素
  • 小/標準/大ボタン
  • rem 設計のカード
  • px 固定の注記
  • html の値の帯
持っている状態
  • 通常
  • フォーカス
キーボード

Tab で小/標準/大へ、Enter/Space で適用。押した段が aria-pressed=true になる

支援技術

role=group+aria-label「文字サイズ」、選択は aria-pressed。html の font-size を変え、rem の部品が余白・幅ごと追従する(WCAG 1.4.4)

動き

なし

デザインの要点

  • 文字サイズは html の font-size を変えるだけにし、部品は rem で書く。要素ごとに JS で拡大すると必ず漏れる
  • 余白・角丸・ボタンの高さも rem にする。文字だけ大きくなって箱が固定だと、行が詰まって読みにくくなる
  • 幅は max-width を rem で持ち、width:100% で画面に収める。大にしたとき横あふれしないかを 320px で確かめる
  • px で書いてよいのは罫線の太さくらい。小さな注記ほど px で固定されがちで、拡大したい人が一番読めない

コード(コピーして使えます)

<div class="ts-wrap">
  <div class="ts-ctl" role="group" aria-label="文字サイズ">
    <span class="ts-lbl">文字サイズ</span>
    <button type="button" class="ts-btn" data-size="87.5" aria-pressed="false">小</button>
    <button type="button" class="ts-btn" data-size="100" aria-pressed="true">標準</button>
    <button type="button" class="ts-btn" data-size="118.75" aria-pressed="false">大</button>
  </div>
  <article class="ts-card">
    <h2>配送について</h2>
    <p>ご注文から 2 営業日以内に発送します。北海道・沖縄は追加で 1〜2 日かかります。</p>
    <a href="#ts-address" class="ts-link">配送先を変更</a>
    <p class="ts-px">※ px で書いた注記は追従しません(12px 固定)</p>
  </article>
  <div class="ts-band"><span class="ts-tag">html</span><span id="ts-msg">font-size: 100% → 1rem = 16px</span></div>
</div>

タグ

同じカテゴリ「アクセシブルUI」のほかのパーツ

関連パーツ