「キーボードで移動できない!」を解決する魔法? `tabindex`の正しい使い方と注意点
こんにちは!Web制作の学習、順調に進んでいますか?
HTMLを書いていると、「あれ、この見出しもキーボードで選択できたら便利じゃないかな?」なんて思うこと、ありますよね。
実は、HTMLには`tabindex`(タブインデックス)という、Webページの「カーソルの通り道」を自由に操るための魔法の属性があるんです。でも、この魔法、使い方を間違えると、かえってユーザーを迷子にさせてしまう「諸刃の剣」でもあります。
今日は、初心者さんが一番つまずきやすい「`p`タグや`h1`タグをキーボードで操作可能にする際の注意点」について、一緒に紐解いていきましょう!
—
そもそも `tabindex` ってなに?
Webの世界では、マウスを使わずに「Tabキー」を押して、リンクやボタンを順番に移動していく操作がよく行われます。これを「キーボードナビゲーション」と言います。
通常、ブラウザは「リンク(`a`タグ)」や「ボタン(`button`タグ)」を自動的に認識して、Tabキーで移動できるようにしてくれます。まるで、「ここはお店への入り口ですよ」と自動ドアが教えてくれるようなものですね。
ところが、`p`(段落)や`h1`(見出し)は、もともと「ただの文章」なので、Tabキーで移動する対象にはなっていません。そこで登場するのが `tabindex` です。
—
tabindex を付与する時の「お約束」
`tabindex=”0″` と書くと、その要素は突然「キーボードで選べる場所」に変身します。一見便利そうですよね。でも、ちょっと待ってください。
1. 「ただの文章」にフォーカスを当てる必要はある?
例えば、何の意味もなく `p` タグに `tabindex=”0″` をつけると、ユーザーはTabキーを叩くたびに、特に何もしなくていい文章の上で何度も止まってしまいます。
例え話:
お買い物に行って、お店の棚にある「ただの壁紙」にいちいち立ち止まらされるとしたら、どう思いますか? 「えっ、何かの商品? 何かのアクションができるの?」と混乱してしまいますよね。
アクセシビリティの基本は、「ユーザーを迷わせないこと」です。本当に操作が必要な要素以外には、無理に `tabindex` をつけないのが一番の優しさなんです。
2. フォーカスが当たった時の「見た目」を忘れないで
`tabindex` を付与してキーボードで選択できるようにしたなら、「今、ここにいます!」というサイン(フォーカスリング)がちゃんと見えるようにしましょう。
CSSで `outline: none;` と書いて消してしまう人が多いのですが、これはキーボードユーザーにとっては「視界を奪われる」のと同じです。
ここへようこそ!
—
それでも「クリックできる見出し」を作りたいときは?
「どうしても、この見出しをクリックしたら何かが起きるようにしたい!」という場合はどうすればいいでしょうか?
そんな時は、`tabindex` を手当たり次第に使う前に、まずは以下の順番で考えてみてください。
1. `button`タグを使えないか?
- 一番の解決策です。`h1`タグの中に `button` を入れるのが、最も安全でアクセシブルです。
2. `a`タグ(リンク)を使えないか?
- 画面遷移やページ内移動なら、これが正解です。
3. どうしても `div` や `p` を使うなら…
- `tabindex=”0″` を付与し、さらに「キーボードでEnterキーが押されたら動く」というJavaScriptの処理も忘れずに追加しましょう。
// JavaScriptでキーボード操作を補足する例
const title = document.querySelector(‘.focusable-title’);
title.addEventListener(‘keydown’, (event) => {
// Enterキー(コード13)が押されたら反応する
if (event.key === ‘Enter’) {
alert(‘見出しがクリックされました!’);
}
});
—
最後に:Webはみんなのもの
`tabindex` を使うときは、「もし自分が目が見えなくて、キーボードだけでこのサイトを操作していたら、この場所で止まりたいかな?」と想像してみてください。
技術は、誰かを置いてけぼりにするためのものではなく、みんなを目的地までスムーズに運ぶための道具です。
最初は難しく感じるかもしれませんが、大丈夫!一つずつ丁寧に向き合っていけば、必ず「誰にとっても使いやすい優しいWebサイト」が作れるようになりますよ。
また次の記事で、一緒にお勉強しましょうね!

コメント