【入門編】リストアイテムの選択状態管理 – HTML実践ガイド

リストを選択する、という「魔法」。aria-selectedでアクセシブルなUIを作ろう

こんにちは!Webの世界へようこそ。
HTMLを書き始めたばかりの頃って、「タグは覚えたけど、これってどう動かせばいいの?」と迷子になってしまうこと、ありますよね。

今日は、Webサイトでよく見かける「リストアイテムをクリックして選択状態にする」という機能について、少しだけ深く、でも優しくお話しします。

「ただ色が変わるだけ」と思われがちなこの操作。実は、HTMLには「今、これが選ばれているよ!」とコンピューターや画面読み上げソフトに伝える魔法の言葉があるんです。それが `aria-selected` 属性です。

—

なぜ「aria-selected」が必要なの?

例えば、お買い物サイトのサイズ選択を想像してみてください。
「S」「M」「L」というボタン(リスト)が並んでいて、クリックすると色が反転しますよね。

人間は見た目で「あ、Mが選ばれているな」とわかります。でも、目の不自由な方が使う「画面読み上げソフト」は、ただの色変わりだけでは「どの項目が選ばれているのか」を判断するのが難しいんです。

そこで登場するのが `aria-selected`。
これは「この項目は今、選択されています!」という名札を、裏側でそっと掲げてあげるようなものです。これがあるだけで、Webサイトは誰にとっても使いやすい「優しい場所」に変わります。

—

ステップ1:HTMLでリストの枠組みを作る

まずは、リストの土台となるHTMLを用意しましょう。ここでは「お好みのトッピング」を選ぶリストを想定します。

  • チョコチップ
  • キャラメル
  • ベリーソース

ここで大切なポイントが3つ。
1. `role=”listbox”` と `role=”option”`:HTMLに「これはただのリストじゃなくて、選択リストなんだよ」と教えてあげます。
2. `aria-selected=”false”`:最初は何も選ばれていないので、`false`(偽)にしておきます。
3. `tabindex=”0″`:これを書くことで、マウスだけでなくキーボードの「Tabキー」でも操作できるようになります。これがアクセシビリティの第一歩です!

—

ステップ2:JavaScriptで「選ばれた!」を検知する

次に、JavaScriptを使って「クリックされたら名札を書き換える」という処理を書いてみましょう。

// リスト内のすべての項目を取得します
const items = document.querySelectorAll(‘[role=”option”]’);

items.forEach(item => {
item.addEventListener(‘click’, () => {
// 1. 他の項目が選択されていたら、一旦その名札(aria-selected)をfalseにします
items.forEach(i => i.setAttribute(‘aria-selected’, ‘false’));

// 2. クリックされた項目だけ、名札をtrueにします
item.setAttribute(‘aria-selected’, ‘true’);

console.log(“今選ばれているのは: ” + item.textContent);
});
});

どうでしょう?意外とシンプルですよね。
「全部の選択を解除してから、選んだものだけをTrueにする」。この手順を踏むことで、単一選択のUIが完成します。

—

ステップ3:CSSで「選ばれていること」を伝える

最後に、CSSで見た目を整えましょう。`aria-selected` の状態に合わせてスタイルを切り替えるのがコツです。

/ 選択されていないときの見た目 /
[role=”option”] {
padding: 10px;
cursor: pointer;
border: 1px solid #ccc;
}

/ 選択されたときだけ、色を変える魔法のCSS /
[role=”option”][aria-selected=”true”] {
background-color: #ffcccc; / ほんのりピンクに /
border: 2px solid #ff6666;
font-weight: bold;
}

CSSのカッコの中に `[aria-selected=”true”]` と書くことで、「属性がTrueのときだけこのスタイルを適用してね」と指示を出しています。これなら、JavaScriptで属性を書き換えるだけで、見た目も自動的に変わってくれるんです。

—

最後に:つまずいても大丈夫!

最初は「role? aria? 何か難しそう…」と感じるかもしれません。でも、これらは「誰かに優しくするための工夫」です。

完璧に使いこなそうと気負う必要はありません。「あ、このリストは選択できるものだから、aria-selectedを付けてみようかな?」という小さな気づきが、あなたの作るWebサイトを確実に素晴らしいものにしていきます。

まずはコードをコピーして、ブラウザで動かしてみてください。「色がパッと変わる瞬間」って、やっぱり何度見ても楽しいですよ!

また何か分からないことがあれば、いつでも聞きに来てくださいね。あなたのWeb制作ライフを、ずっと応援しています!

コメント

タイトルとURLをコピーしました