本文へスキップ

星評価

星にホバー(PC)またはタップ(スマホ)で評価を選択。選んだ値をテキストで表示する。

プレビュー

クリック

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

仕様書

向く場面
  • レビュー・満足度の5段階評価
  • ホバーで仮の値、クリック/タップで確定させたい入力
  • 選んだ段階を文言でも示したいフォーム
避ける場面
  • 半星や10段階など細かい評価
  • 評価を取り消す操作が要る画面(0に戻せない)
構成要素
  • 見出し
  • 星ボタン×5
  • 選択結果の文言
持っている状態
  • 通常
  • ホバー
  • 押下中
キーボード

APG radio group: Tab でグループへ入り(選択中の星、未選択なら1つ目)、←↓/→↑ で星を移動してその場で選択、Home/End で1つ星/5つ星、Space でも選択

支援技術

role=radiogroup+aria-label。各星は button role=radio+aria-checked+aria-label「Nつ星」、roving tabindex。結果は「4つ星: 良い」の文言を aria-live=polite で読み上げる

動き

星の色 120ms、押下で 0.9倍 120ms(反応の手応え)。reduced-motion で無効

デザインの要点

  • ホバーは仮の値、クリックで確定。ホバーで即確定すると、マウスが通っただけで評価が変わる
  • 星は 44px の標的にする。文字サイズ 30px の★だけだと、指で隣の星を押す
  • 選んだ段階は「4つ星: 良い」と文言で添える。星の数だけでは「良い」なのか「普通」なのか人によって違う
  • 意味的には5択のラジオ。role=radio と矢印キーで、キーボードでも1つ星から5つ星へ滑らかに選べる

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

<div class="sr-wrap">
  <p class="sr-label" id="sr-label">評価を選んでください</p>
  <div class="sr-stars" id="sr-stars" role="radiogroup" aria-labelledby="sr-label">
    <button class="sr-star" type="button" role="radio" aria-checked="false" tabindex="0" data-v="1" aria-label="1つ星">★</button>
    <button class="sr-star" type="button" role="radio" aria-checked="false" tabindex="-1" data-v="2" aria-label="2つ星">★</button>
    <button class="sr-star" type="button" role="radio" aria-checked="false" tabindex="-1" data-v="3" aria-label="3つ星">★</button>
    <button class="sr-star" type="button" role="radio" aria-checked="false" tabindex="-1" data-v="4" aria-label="4つ星">★</button>
    <button class="sr-star" type="button" role="radio" aria-checked="false" tabindex="-1" data-v="5" aria-label="5つ星">★</button>
  </div>
  <p class="sr-value" id="sr-value" aria-live="polite">未選択</p>
</div>

タグ

同じカテゴリ「フォーム入力」のほかのパーツ

関連パーツ