假设我有这个

<div id="div1">
 <span tabindex="0">Span0</span>
 <span tabindex="0">Span1</span>
 <span tabindex="0">Span2</span>
</div>
<div id="div2">
 <span tabindex="0">Span20</span>
 <span tabindex="0">Span21</span>
 <span tabindex="0">Span22</span>
</div>

有没有办法让div2中的所有跨距在tab顺序上优先于dev1中的跨距,尽管它们的tabindex值都设置为0?例如,如果我在屏幕阅读器打开的情况下进入页面,那么在循环进入div1之前,当按tab键时,它应该首先遍历div2中的跨度
注意:我的实际用例比这个复杂得多……这只是为了说明
注意:我知道我可以将tabindex值修改为非零,但这不是我想要的。我正在寻找一种能力,可以同时设置div中所有项的优先级,尽管这些项被设置为tabindex=0。。。
注意:这通常也适用于所有可制表项,即不只是那些标记为tabindex=“0”的项
有没有一种不使用javascript的方法?即,使用html、css或ARIA标记:https://msdn.microsoft.com/en-us/library/ie/gg701982%28v=vs.85%29.aspx?是否可以使用地标角色:http://www.w3.org/WAI/PF/aria-practices/#focus_tabindex如果是的话我该怎么做

最佳答案

您可以使用aria-flowto属性:
此技术的目标是使用aria flowto属性指定内容的备用读取顺序。当元素的aria flowto属性只有一个值时,辅助技术可能会放弃正常的文档读取顺序,转到id等于该值的元素。当aria flowto属性具有多个id时,辅助技术可能会将目标元素作为替代项(由目标元素的名称标识)呈现给用户,用于读取顺序中的下一个内容。
using aria-flowto
这种技术的问题是目前屏幕阅读器并不广泛地支持它,因此您必须测试目标技术的兼容性。
这就是标记的外观

<h2 aria-flowto="div2">Header before messy content</h2>
<div id="div1" aria-flowto="after">
 <span tabindex="0">Span0</span>
 <span tabindex="0">Span1</span>
 <span tabindex="0">Span2</span>
</div>
<div id="div2" aria-flowto="div1">
 <span tabindex="0">Span20</span>
 <span tabindex="0">Span21</span>
 <span tabindex="0">Span22</span>
</div>
<h2 id="after">Header after messy content</h2>

关于html - 一次指定/覆盖DIV标签中所有可选项元素的tabindex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29218062/

10-13 01:07