We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

HTMLコーディング プログラミング

スクリーンリーダーの利用を意識したコーディング

投稿日:

インターネットを閲覧している人は様々です。中には目の見えない方もいらっしゃいます。
そういった方にも情報を伝えるためには、HTMLを正しくコーディングしていく必要があります。
いくつか考えてみましょう。

最近書いた「実際的なimgタグのalt属性の付け方」という記事でもalt属性をスクリーンリーダーを意識して付ける必要があることが分かります。

また、「HTMLの見出しタグの使い方」でも触れていますが、スクリーンリーダーは見出しタグを目次のように利用して、必要な場所にジャンプすることが分かります。

その他にもどんなことを考えておくことができるでしょうか。

読ませたくないものを疑似要素にする

例えば

\ゆっくりしていってね/

こんな要素を作りたいとします。

一番簡単に考えると、

<div class="yukkuri">
  <span class="left-slash">\</span>
  ゆっくりしていってね
  <span class="right-slash">/</span>
</div>

のようなHTMLを作り、スラッシュの角度を整える、という感じにするかもしれません。
でもこうしてしまうと、このスラッシュをスクリーンリーダーが「記号」として読み上げてしまうかもしれません。

この場合は、HTMLは

<div class="yukkuri">ゆっくりしていってね</div>

これだけにして、::before::afterの疑似要素を使って、スラッシュ部分を作ります。
そうすると、この部分は読み上げられることはありません。

liを使わない箇条書きのようなものを作る時も◆ 項目のような表示はの部分は疑似要素にする方が良いですね。

画像の中にテキストが入ったボタン

こういったボタン、よく見ますよね。
文字入りで画像が書き出されていてalt属性が適切に付けられていれば全く問題ありません。

でも「hoverすると背景がボケるボタンで上に文字が乗っている」というような場合、画像ボタンの上にposition: absoluteで文字を乗せる、というような組み方をすることがあります。

悪い例

この場合、こんな風に組んでしまいかねません。

<div class="picture-button">
  <a href="#"></a>
  <span>重ねたい文字</span>
</div>

https://jsbin.com/fifacun/4/edit?html,css,output
一見よさそうですね。

これのどこがいけないかというと、リンクに文字が含まれていません
そうするとスクリーンリーダーはこのリンクを利用者に伝えることができなくなってしまいます。

良い例

この場合作り方を変える必要があります。

<div class="picture-button">
  <a href="#">重ねたい文字</a>
</div>

https://jsbin.com/mayeqax/4/edit?html,css,output

HTMLは普通の実装になり、要件通り背景がぼかされています。
backdrop-filterという新しいプロパティを知らないとなかなか到達できないですが、アンテナを張り巡らして新しい便利なプロパティを覚えていかないといけませんね。


少々HTMLの構造が複雑になっても、スクリーンリーダーで正しい読み上げができるような状態を目指した方が良いと思います。
「そんなの考えている余裕がない」と思われるかもしれません。

ただ知っているか知っていないかによって選択肢の幅が違います。
アクセシビリティにも重きを置くクライアントに当たった時には、こうした知識が生きてくることになるでしょう。

-HTMLコーディング, プログラミング


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

【WSL】PHPから送信するメールをテキストに保存する

テスト環境で使っていると、PHPのメール送信をテストしたい時があります。 かといって、実際に送信されてしまうと面倒です。 xamppにはmailtodiskというのがあり、メールをディスクに保存してく …

Google Apps Script でWebAPIを作ろう

Google Apps Scriptを使うと簡単にWeb APIを作ることが出来ます。 準備 まず、Google Drive上からApps Scriptを作れるようにしましょう。 ドライブの左上の「新 …

【PHP】ビルトインウェブサーバーで楽々テスト環境

teratailで質問に答えるようになったら、以外にサーバー立てずにテストして、ローカル制限に引っかかっている人が多いので、簡単に立てられるローカルサーバーの構築方法を書いておこうと思います。 まず、 …

PHPからsyslogを書く

忘備録です。 PHPでシステム回りを作っているんですが、syslogに出力出来たらなー、と思っていました。 調べたら簡単♪ function logger($mes) { exec("/bi …

Google Bookmarksを利用するChrome拡張機能

暇なときにGoogle Bookmarksを利用するプラグインを作ってみました。 最低限のことしか出来ないのですが、自分で使う分にはこれで必要十分です。 Gブックマーク もしよろしかったら使ってみてく …