🐕
Swiperアクセシビリティ問題:li要素へrole="group"属性が付与される問題
症状
swiperを使用した際liタグにrole=groupが存在する
<ul class="swiper-wrapper">
<li class="swiper-slide" role="group">アイテム</li>
<li class="swiper-slide" role="group">アイテム</li>
<li class="swiper-slide" role="group">アイテム</li>
...
</ul>
エラー内容
<ul>および<ol>の直下には<li>、<script>または<template>要素のみを含まなければならない
- リスト要素内に許可されていない直接の子要素
[role=group]
が存在する
問題の本質
-
HTML仕様上の制約
- リスト要素(
<ul>
/<ol>
)の直接の子として許可されるのは基本的に<li>
のみ - 例外的に
<script>
と<template>
も許可されている
- リスト要素(
-
二重の役割の矛盾
-
<li>
要素にrole="group"
を追加することで、一つの要素に異なる2つのセマンティック役割を持たせている - これは論理的に矛盾していて支援技術が混乱する原因になる
-
アクセシビリティへの影響
- スクリーンリーダーがリスト構造を正しく認識できない
- 不正確なナビゲーション情報が伝達される
修正案
- javascriptでrole="group"属性を削除する
- swiperを使用しない。他のライブラリを使用する。または自作する。
Discussion