CSS3 を使用して HTML で基本的なメニューを作成しています。をクリックするdivと、隣接するリストが CSS トランジションを使用して拡大または縮小します。例えば:
<style>
ul {
-webkit-transition: height 200ms linear;
overflow: hidden;
}
</style>
<div>Tap to expand</div>
<ul style="height: 0" aria-hidden="true">
....
</ul>
をタップするdivと、ul高さはその子のオフセット高さの合計に更新され、aria-hidden設定falseまたは削除されます。もう一度タップすると、高さが 0 になり、 が設定されますaria-hidden="true"。
私が直面している問題は、Mobile Safari が、隣接する要素がそれらの aria-hidden 値を変更するのにうまく対応できないことです。いくつかの実験から、変化する要素が少なくとも 2 つのフォーカス可能な要素から離れていて、DOM の変更が発生した場合に最適に機能します。<div>ドキュメントの最後にa を追加しながら、次のことを試しました。
<div>Tap to expand</div>
<div>x</div>
<div>x</div>
<ul><!-- This works -->
<div>Tap to expand</div>
<div>x</div>
<ul><!-- This doesn't -->
<div>Tap to expand</div>
<div></div>
<div></div>
<ul><!-- Nor does this -->
それらを別々の div でラップしたり、ターゲットの直前に 2 つの div を挿入および削除したりするなどの他のトリックも機能しません。VoiceOver は、要素を最初に選択したときに、次に再生する要素を既に選択しているようです。
この種のアクセス可能な機能で成功した人はいますか?