トピックを検索
取り消し線だけで示す元の価格と削除した語
ショップのセール表示で、元の価格の取り消し線をCSSで引いているため、スクリーンリーダーは「40ドル、28ドル」と読み、どちらの価格で買えるのかが伝わりません。
text-decoration: line-through; 問題
スクリーンリーダーや読み上げツールを使う人には、一つの商品に価格が二つ聞こえ、どちらを支払うのかが分からない
あるショップの商品一覧で、リネンのトートがセール中です。商品名の下には、取り消し線の入った小さな灰色の40ドルと、太字の28ドルが並んでいます。カードを見れば、40ドルだったトートが今は28ドルだと、すぐに分かります。
スクリーンリーダーで一覧を読んでいくと、「リネンのトート、40ドル、28ドル」と聞こえます。40ドルの取り消し線はCSSで描いたもので、テキストには含まれないため、二つの価格は同じように読まれます。次のホーローのマグは「ホーローのマグ、18ドル」なので、最初のカードは、ただ価格が二つある商品に聞こえます。どちらが適用されるかは、推測するか、かごに入れてみるまで分かりません。
達成基準1.3.1「情報及び関係性」はレベルAです。見せ方で伝えている情報(ここでは、どちらが元の価格か)は、コードからも判別できるか、テキストでも得られなければなりません。W3Cの失敗例F2は、まさにこの状態を示しています。文字の見せ方の変化が意味を持つのに、それを伝えるマークアップもテキストもない状態です。
取り消し線はCSSのテキスト装飾で、マークアップではありません。Chromiumのアクセシビリティツリーでは、text-decoration: line-throughを付けた「40ドル」のspanは、隣の「28ドル」と同じただのテキストです。線は太字と同じく文字の書式として伝わるだけで、たとえばNVDAは、初期設定では取り消し線などのフォント属性を読み上げません。スクリーンリーダーは、渡されたものしか読めません。W3Cの十分な達成方法G117は、同じ情報をテキストでも伝える方法で、ここで示す最初の二つの修正がこれにあたります。
オンラインで買い物をする人は、かごの中だけでなく、一覧ページで価格を比べます。セール価格が商品カードにしか出ていないなら、その違いはカードで聞き取れなければなりません。
10グループ中2グループに影響
- 全盲 (影響あり)
- 弱視 (影響なし)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響なし)
- 筋力・可動域 (影響なし)
- 認知 (影響あり)
- 光過敏 (影響なし)
- 視覚を使わない スクリーンリーダーはカードの文字を「リネンのトート、40ドル、28ドル」と読み、40ドルの取り消し線はそこに含まれないため、どちらがセール価格かを示すものがありません。
- 言語・認知・学習の能力が限られる 文字を読む補助に読み上げツールを使う人にも、同じ二つの価格が聞こえます。また、数字に引いた線が「もう違う」を意味すると分かるのは、その慣習を知っている人だけです。
HTMLは正しく、元の価格に使った灰色もコントラストが足りています。axeには、テキスト装飾を調べるルールがありません。EaseWebの診断(ew:struck-price-not-marked)は、CSSだけで取り消し線を引いた価格を探し、元の価格だと示す言葉が、表示でも非表示でも周りにないものを報告します。価格は通貨で見分けるため、取り消し線を引いたToDoの項目は対象外です。太字、色、マーカーなど、ほかの見せ方が言葉を必要とする意味を持つかどうかは判断できません。
試してみる
トートはどちらの価格で買えますか?スクリーンリーダーの読み上げを見てから、スタイルを無効にしてみましょう
40ドルの取り消し線はCSSで描いたものです。線のほかに、元の価格だと伝えるものはありますか?
問題あり 修正できますか?
リネンのトート
40ドル 28ドル
-
ホーローのマグ
18ドル
一覧を読むと、スクリーンリーダーの読み上げ:
- リネンのトート、40ドル、28ドル
- ホーローのマグ、18ドル
修正方法
線が伝える意味を、通常価格とセール価格という言葉にする。表示しても、視覚的に隠してもかまわない
- 1取り消し線、色、太さだけで、テキストの意味を伝えない。
- 2どちらが元の価格で、どちらが今の価格かを、読み上げられる言葉で伝える。
- 3元の価格にはs、編集にはdelとinsを使う。言葉の代わりではなく、言葉に加えて使う。
<li class="product"> <img src="linen-tote.jpg" alt=""> <h3>リネンのトート</h3> <p class="price"> <span class="old">40ドル</span> <span class="now">28ドル</span> </p></li>通常価格とセール価格をページに書く
<li class="product"> <img src="linen-tote.jpg" alt=""> <h3>リネンのトート</h3> <p class="price"> 通常価格 <span class="old">40ドル</span> セール価格 <span class="now">28ドル</span> </p></li>この方法を選ぶ理由:見た目だけでなく、言葉でも伝える
線はCSSにしかないため、価格のテキストは「40ドル 28ドル」です。マークアップにも言葉にも、どちらが元の価格かを示すものはありません。
短い言葉が、線と同じことを伝えます。スクリーンリーダーは「通常価格 40ドル、セール価格 28ドル」と読み、読み上げツールも同じように読みます。線の意味を知らない人も、見て分かります。線は残るため、カードの見た目はほとんど変わりません。
三つとも、意味を見た目以外にも持たせます。表示する言葉を使ってください。短い言葉を二つ加えるだけで、線は見えてもその意味を知らない人を含め、すべての人に同じ情報が届きます。どうしてもデザインに言葉を入れられないときは、視覚的に隠した言葉を使います。スクリーンリーダーで聞く結果は同じです。どちらにもsを加えてかまいませんが、効果がスクリーンリーダー次第なので、sだけに頼らないでください。
もう正しくない価格にはsを、変更履歴や書き換えの提案のような文書の編集にはdelとinsを使います。この二つは別のものです。delはテキストが削除されたことを、sはもう当てはまらないことを示します。変更履歴には、価格と同じ問題が二重にあります。読み上げると、削除した語と追加した語が続けて読まれてしまいます。変更箇所ごとに「削除:」「追加:」のような隠した言葉を入れます。「確認も取り消しもできずに文章を書き換えるAIリライトボタン」のデザインの案にある、変更を示すサンプルがその例です。
言葉をpやspanのaria-labelに入れないでください。これらの要素には名前を付けられず、多くのスクリーンリーダーはそのラベルを読みません。「読み上げられないことが多い、divやspanのaria-label」を参照してください。
カード全体が一つのリンクの場合、リンクの名前はその中のテキストから作られるため、価格も含まれます。言葉も名前の一部になり、「リネンのトート、通常価格 40ドル、セール価格 28ドル」となります。これが望ましい形です。
元の価格も読める濃さに保ちます。灰色にするなら4.5:1以上にします。白の上の#6b6f7bは5.02:1です。4.5:1を下回る灰色は、それ自体が別の基準を満たしません。「ブランドカラーや写真の上でコントラストが足りない文字」を参照してください。
商品が多い一覧では、価格を一つのコンポーネントで表示し、毎回同じ言葉にします。そうすれば、スクリーンリーダーの利用者は同じパターンで聞けます。
デザインの案
セールは、すっきり見せたまま、正しく読み上げさせられる
元の価格や編集の見せ方をさらに4通りと、流行りだが不合格の2通りを示します。それぞれの説明に、スクリーンリーダーが何と読むかを書いています。
デザインファイルで
- 元の価格にはすべて、「通常価格」「定価」「Was」などの言葉を添える。表示できないときは、隠したテキストで作るようファイルに書いておく。
- 元の価格は背景に対して4.5:1以上にし、その灰色の横に比を書く。
- 編集では、削除した語に取り消し線、追加した語に下線を引き、スクリーンリーダー向けに両方を言葉でも示す。
- 価格のまとまりは、言葉ごと一つのコンポーネントとして描き、どのカードでも同じ言い方にする。
合格
- 価格の上の小さな「通常価格」 元の価格の上に控えめな小さなラベルを置き、#6b6f7b(5.02:1)の取り消し線付きの元の価格、その下に大きく新しい価格を並べます。「通常価格 40ドル、28ドル」と読まれます。
基本原則:見た目だけでなく、言葉でも伝える
- 「12ドルお得」のピル 緑のピル(6.49:1)でお得な額を示し、元の価格は線を引かずに「通常40ドル」と書き添えます。「28ドル、12ドルお得、通常40ドル」と読まれます。
基本原則:見た目だけでなく、言葉でも伝える
- 別の行に「通常価格」 セール価格を赤(6.57:1)で先に示し、通常価格は別の行に、線を引かず言葉で続けます。落ち着いた見た目で、読み解くものがありません。
基本原則:見た目だけでなく、言葉でも伝える
商品到着から
削除:14追加:30日以内なら、どの商品も全額返金で返品できます。取り消し線と下線に隠した言葉を添えた、編集の提案 削除した語は薄い赤(6.44:1)に取り消し線、追加した語は薄い緑(6.49:1)に下線を付け、それぞれの前に「削除:」「追加:」を隠して入れます。返品ポリシーへの編集の提案は「削除:14 追加:30 日以内」と読まれます。
不合格
- 斜線で消した元の価格WCAG 1.3.1 CSSで描く斜めの線は取り消し線より目を引きますが、装飾であることは同じです。「40ドル、28ドル」と読まれ、どちらが元の価格かは伝わりません。
商品到着から14 30日以内なら、どの商品も全額返金で返品できます。
色だけで示す編集の提案WCAG 1.3.1 線も下線も言葉もなく、薄い赤と緑の背景だけで示します。編集は「14 30 日以内」と読まれ、線がないため、赤と緑を見分けにくい人にも分かりません。
修正の確認
3項目、マウス不要
確認方法: スクリーンリーダー、スタイルを無効化
OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。価格のコンポーネントやショップのテーマを変更した際は、再度確認します。
制限
このサンプルは、どのページでも同じ結果になることを保証するものではありません。例は元の価格ですが、検索結果の一致を示すマーカー、一つだけ大事な語を示す太字、問題を示す赤い文字など、見た目が意味を持つほかのテキストも同じです。言葉でも伝えてください。字下げのためだけにblockquoteを使い、引用ではないのに引用として読み上げられる状態は、同じ基準の別の失敗(F43)で、ここでは扱いません。商品一覧、商品ページ、かごを、利用者が使う支援技術や道具で確認してください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
コードを更新しても、使いやすさを保つために
ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。