The aria-checked attribute is a WAI-ARIA attribute that communicates the selection state (checked, unchecked, or partially checked) of elements such as checkboxes, radio buttons, and toggle switches to assistive technologies.
aria-checked属性は、WAI-ARIA(Web Accessibility Initiative - Accessible Rich Internet Applications)によって定義される属性の一つで、 主にチェックボックスやラジオボタン、トグルスイッチなどの選択可能な要素に適用され、要素の選択状態(チェックの有無)を示します。
この属性を適切に使用することで、スクリーンリーダーなどの支援技術を利用するユーザーに対して、 その要素が現在選択されているのかどうかを明示的に伝えることができます。
aria-checked属性は、以下の3つの値を取ることができます。
補足 : mixed は、親要素が複数のチェックボックスを含む場合などに使用されます。例えば、一部の項目がチェックされているが、すべてではない場合に mixed を適用できます。
例
HTML
<div role="checkbox" aria-checked="true" tabindex="0">選択済み</div>
<div role="checkbox" aria-checked="false" tabindex="0">未選択</div>
<div role="checkbox" aria-checked="mixed" tabindex="0">部分選択</div>
上記の例では、それぞれのチェックボックスが異なる状態であることを支援技術に伝えることができます。
aria-checkedは、通常、以下のrole属性と組み合わせて使用されます。
role="checkbox" → チェックボックスrole="radio" → ラジオボタンrole="switch" → トグルスイッチHTML
<div role="checkbox" aria-checked="false" tabindex="0" onclick="toggleCheck(this)">チェックボックス</div>
<script>
function toggleCheck(element) {
let currentState = element.getAttribute("aria-checked");
element.setAttribute("aria-checked", currentState === "true" ? "false" : "true");
}
</script>
このコードでは、クリックするたびにaria-checkedの値が切り替わります。
<input>要素を使用できない場合aria-checkedは、通常の<input type="checkbox">ではなくカスタムUIでチェックボックスを実装する際に役立ちます。
HTML
<div role="checkbox" aria-checked="false" tabindex="0" onclick="toggleCheck(this)">カスタムチェックボックス</div>
注意 : <input>要素の代わりにaria-checkedを使用する場合は、キーボード操作 (EnterやSpaceキー) をサポートすることも重要です。
HTML
<ul role="tree">
<li role="treeitem" aria-checked="mixed">親アイテム</li>
<ul>
<li role="treeitem" aria-checked="true">子アイテム1</li>
<li role="treeitem" aria-checked="false">子アイテム2</li>
</ul>
</ul>
このように、mixedを使うことで、親要素が部分的にチェックされていることを表現できます。
支援技術対応を強化するため、aria-checkedを使用する要素には、以下のようにキーボード操作をサポートするのが望ましいです。
HTML
<div role="checkbox" aria-checked="false" tabindex="0" onkeydown="handleKey(event, this)" onclick="toggleCheck(this)">チェックボックス</div>
<script>
function handleKey(event, element) {
if (event.key === " " || event.key === "Enter") {
toggleCheck(element);
event.preventDefault();
}
}
</script>
ここでは、SpaceまたはEnterキーを押すことで、チェック状態を変更できるようにしています。
<input type="checkbox">や<input type="radio">を使用するroleを正しく設定するaria-checkedを使用する際は、必ず適切なrole(checkbox, radio, switch)を設定する。tabindex="0"を追加し、EnterやSpaceキーでの操作をサポートする。aria-labelledbyやaria-labelを活用して、要素の意味を明示する。aria-checked属性は、カスタムチェックボックス、ラジオボタン、トグルスイッチなどの要素でチェック状態を示すために使用されます。
true → 選択されているfalse → 選択されていないmixed → 部分選択(ツリービューなど)role="checkbox", role="radio", role="switch"と組み合わせて使用カスタムUIを作成する際に適切にaria-checkedを活用することで、アクセシビリティを向上させ、より多くのユーザーにとって使いやすいWebページを構築できます。