初心にもどって、WordPressの標準テーマ「twentyfifteen」のコードを読んでいると、見慣れないCSSを発見!
/** * 7.0 Accessibility */ /* Text meant only for screen readers */ .says, .screen-reader-text { clip: rect(1px, 1px, 1px, 1px); height: 1px; overflow: hidden; position: absolute !important; width: 1px; }
クラス「.screen-reader-text」を要素につけると、「display: none;」と同じ動きをします。だったら、「display: none;」で良いんじゃね?と思って調べると、「display: none;」だと画面読み上げソフトウェアで読み上げてくれないらしい。
clipプロパティを使った非表示の方法をもっとシンプルにすると、下記のようなCSSになります。
.screen-reader-text { clip: rect(1px, 1px, 1px, 1px); position: absolute; }
clipプロパティはボックスを切り抜き表示(クリッピング)する際に使用するもので、上記で縦横0pxの領域を切り抜き(つまり非表示に)しているようです。positionプロパティは、absoluteまたはfixedでないとclipプロパティが発動しないので指定しています。
clipプロパティのCSS2の仕様では「ボックスの四辺の端から内側への距離」を指定することになっていますが、 CSS2.1では「ボックスの上辺と左辺を基準とした距離」と改定されています。
http://www.htmq.com/style/clip.shtml より引用
しかし、このrectは、IE6/7では、カンマ(,)区切りではなく半角スペース区切りで値を指定しないと切り抜きされないようで、それに対応するには、下記のような書き方になります。
.screen-reader-text { clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); position: absolute; }
このclipプロパティを使った非表示がSEO的にどうかはわかりませんが、少なくとも画面読み上げソフトウェア的には「display: none;」よりも良いようです。
以上、ご参考になりましたら幸いです。
なお、ボックスはそのままにテキストだけを非表示にするには、記事「さよなら-9999px (CSSでテキストを画像にする方法)」をご覧ください。