Sal*_*oui 7 html css accessibility voiceover flexbox
我有一个作为父母的链接display: flex
,所有孩子都有不同的 css 顺序。
使用 NVDA 当焦点在链接上时,屏幕阅读器会按照 DOM 顺序读取所有内容。
在带有 VoiceOver 的 Mac 上,屏幕阅读器遵循屏幕上的顺序,而不是 DOM 顺序。
我该如何解决?
a {
display: flex;
}
div {
order: 0;
}
h2 {
order: 1;
}
Run Code Online (Sandbox Code Playgroud)
<a href="#">
<h2>Title</h2>
<div>
<span>€ 300</span>
</div>
</a>
Run Code Online (Sandbox Code Playgroud)
在 Windows 上,在焦点上我得到:标题 300 欧元
在 Mac 上,在焦点上我得到:300 欧元标题
你无法解决这个问题。
除了视觉之外,任何符合order
规则的媒体都是不符合规定的。您需要自担风险依赖不符合标准的实现(即行为可能随时更改)。
来自 flexbox 规范:
该
order
属性不影响非视觉媒体(例如语音)中的排序。同样,order
不影响顺序导航模式的默认遍历顺序(例如循环浏览链接,参见例如 tabindex)。作者必须
order
仅用于视觉而非逻辑的内容重新排序。order
用于执行逻辑重新排序的样式表是不一致的。注意:这是为了使通常线性呈现内容的非视觉媒体和非 CSS UA 可以依赖逻辑源顺序,而顺序用于定制视觉顺序。(由于视觉感知是二维和非线性的,所需的视觉顺序并不总是合乎逻辑的。)