画像の ALT 属性って知っていますか?ALT 属性とは画像に付加するテキスト情報で、画像について手短に説明したテキストを入力する事が望ましいです。画像が表示されない時に何の画像かわかる為の代替テキストとして、音声読み上げブラウザで何の画像か説明してもらう為に必要な属性です。
しかしその ALT 属性、画像検索で優位になったり画像が表示されない時の代替テキストとして大事である事はわかっているのですが、いかんせん書くのが面倒くさいのです。ALT 属性を入力していなくても画像表示には何も支障がありません。パソコンでもスマホでもしっかり画像を表示してくれます。
何故面倒なのか?それは ALT 属性を入力してもそれが実際に役立っているのかわかりにくいからだと思います。もちろん実際には影で画像が表示されない時や音声読み上げブラウザで役に立っているという事は別として、他に役立っている事があるのか不明瞭です。例えば、画像の ALT 属性が実際に画像の説明として画面に表示されるのであれば ALT 属性を入力するのも面倒ではなくなると思うのです。
そこで現在の技術で ALT 属性を画面に表示する事ができるのか調べてみました。
ALT属性を画面に表示する事はできるか?
css には content プロパティというものがあります。これは、要素の直前か直後に文字や画像を挿入することができるものです。挿入できるものは文字、画像の他、URL、番号、属性を挿入する事ができます。これで何かできそうな気がしました。
img:after{ content: attr(alt); }
こんな CSS を書いてみました。img タグの直後に alt 属性を挿入するという事になります。これで一見行けそうな気がします。下記がサンプルです。
できませんでした!
そもそも、CSS の仕様上このような書き方は無効になってしまいます。「:after/:befor」の疑似要素は、その要素内の直前・直後に挿入されるものです。
<div>(before)テスト(after)</div>
上を例に見て頂ければ、before 疑似要素では div 内の文字列の直前、after 疑似要素では div 内の文字列の直後に挿入されます。つまり、開始タグと終了タグがあるタグでのみ有効です。それを踏まえて img タグはどうでしょうか。
img タグは空要素です。
img タグには </img> というような終了タグがありません。空要素には何も含める事ができません。つまり、img タグには after/before 疑似要素は無効である事がわかります。
outside疑似要素
CSS3 の草案段階で outside 疑似要素というものがありますが実装されてはいません。outside 疑似要素では要素の外側にコンテンツを表示するもので、これが使えるようになれば画像の ALT 属性を表示できるかもしれません。しかし、現段階では不可能です。