包容性设计这个术语并非一个新概念。这是自2005年以来一直存在的一个短语。它被定义为“尽量多的人能够访问和使用的主流产品/服务的设计,而不须要特殊的适应或专门的设计“。css
当咱们从新思考咱们的开发方法时,咱们不只仅是访问信息的基础级别。包容性发展意味着为尽量多的人创造有价值的东西,而不只仅是能够得到的东西。它将可访问性放在首位。html
海登·皮克林(Heydon Pickering)用他的“ 包容性设计模式 ”(Inclusive Design Patterns)中的这句话总结了它:html5
经过选择咱们认为普通用户能够阅读的字体,咱们会有意识地疏远咱们的一部分用户。相反,经过选择适合那些努力阅读的人的字体,咱们得出了一个适合每一个人的选择。这是一种高效,有效的包容性设计。linux
能够简单的认为:组件包容性设计 = 可访问性第一 + 组件驱动开发android
包容性设计是一种设计过程,还有不少的设计过程,没有对错,按需选择。ios
还有,现实点。“100%可访问性”是一个没法实现的理想-你老是会遇到某种边缘状况,致使某个用户发现某些内容难以使用-但你应该尽你所能去作。若是您计划包含一个使用WebGL制做的时髦的3D饼图,您可能但愿包括一个数据表,做为数据的可访问的替表明示。或者,您可能只须要包含表并去掉3D饼图-每一个人均可以访问该表,编写代码更快,CPU密集型更少,维护也更容易。git
另外一方面,若是你正在一个展现有趣的3D艺术的画廊网站上工做,那么指望每一件艺术品都能被视障人士彻底访问是不合理的,由于它是一种彻底的视觉媒介。github
( 上图为用户金字塔模型 & 包容性设计立方体模型 )web
设计过程名词解释:chrome
通用/共用性设计 (universal design)
用户金字塔模型自下而上,以关注主流健全用户为前提,力求提高设计对于特殊用户群体的适用。
无障碍设计 (barrier-free design)
用户金字塔模型自上而下,以知足极端用户(金字塔顶端)的需求为首要任务,再拓展至主流用户群体。
包容性设计 (inclusive design)
力图充分认识用户群体多样性,在设计的过程和结果中减小对用户产生无心识的排除。
视觉无障碍设计
听觉无障碍设计
「听觉障碍」包括:听不清/听不到到界面发出的声音。
行动无障碍设计
认知无障碍设计
「认知障碍」意味着用户可能须要辅助技术来帮助他们阅读文本,所以文本替代方案的存在很是必要。
WEB中的可访问性
滥用致使的暗黑模式(DARK PATTERN)包括:
在网页设计中,信号是内容,噪音是内容周围的铬或额外项目。在设计时,目标是尽量提升信噪比(信号不少,噪音很小)。
UX模式过多,若不适合用户或业务,应中止使用。如下列表并不全面,但应做为指南来肯定是否应更新正在使用的模式:
轮播图;大背景图像;悬停状态以获取附加信息;无线嵌套菜单;悬停的回到顶部底部;折叠面板和标签;后退按钮;页面预加载器;社交分享和登陆;内容分页;自动播放多媒体;非用户触发操做;无线分页;缺乏导航路径;没法接受的合并功能;
1. 个人用户中只有一小部分须要无障碍访问。
然而有些例外:
2. 使咱们的网站或应用程序可访问须要花费太多时间/精力/金钱
与其等到最后测试可访问性致使重写,不如一开始就构建它
3. 可访问性是开发人员的一次性任务
可是还有不少其余人应该负责数字可访问性:客户/股东;营销/销售;WEB架构师/设计师/ UI和用户体验专家;数字策略师/编辑/内容建立者;用户;
4. 可访问的网站和应用程序简单或丑陋
有不少漂亮且易于访问的网站,包括(但不限于):
5. 我使用了一些自动化测试工具,所以个人网站或应用程序如今是可访问的
不管您选择使用哪一种自动化工具,还有其余测试因素须要考虑。一些自动化测试相关问题包括:
与手动测试结合使用时,自动化测试工具最有效。手动测试可包括:
我国残障人士数众多,分布广。根据第二次全国残疾人抽样调查结果,目前我国有各种残障人士共8296万人,占全国总人口的6.34%;
我国人口老龄化问题日趋严重,老龄人口比例日趋上升。我过已经步入老龄化社会,目前在我过60岁以上老年人口已经达到1.78亿,并且我过人口老龄化的速度还在加快比例还在进一步扩大。国务院印发的《中国老龄事业发展”十二五“规划》中指出,到2030年我过老年人口规模将会在目前的基础上翻一番。
早在2014年,中国残疾人联合会、中央网信办就联合印发《关于增强网站无障碍服务能力建设的指导意见》。在此号召下,我国多个省市级政府网站前后开展了信息无障碍优化,使得面向障碍群体的信息、办事等业务真正惠民利民,落到实处。
2017年中国残疾人联合会、中国工业和信息化部共同制定下发了《关于支持视力、听力、言语残疾人信息消费的指导意见》。中国盲人协会、国家网信办等政府组织也在积极推动和从事相关公共服务的行业采起信息无障碍措施,鼓励支持相关信息无障碍产品研发、生产、推广、应用。
2019年4月19日,信息无障碍产品联盟(CAPA)2018年度会议暨轮值主席换届选举大会在北京顺利召开。百度、微软(中国)、阿里巴巴集团、中国平安、字节跳动、OPPO、滴滴出行、CSDN、信息无障碍研究会、浙江大学中国信息无障碍和技术研究院等数十家单位表明出席会议。
会议详细内容信息无障碍产品联盟2018年度会议暨轮值换届选举大会在京召开
a11TO 是一个可访问性组织
网络内容无障碍指南(WEB Content Accessibility Guidelines,WCAG) 为开发无障碍网站提供了指南。
How to Read W3C Specs 告诉咱们如何阅读w3c规范
Researching a Property in the CSS Specifications 以grid-auto-rows 为例,教你获取有关规范中详述信息所需的基本细节。
WAI-ARIA Practices 是ARIA一系列可访问组件的官方最佳实践
下面的 WCAG 检查表提供了一些概览:
为视频提供了字幕;Alt标签用于描述图像,或者当辅助技术忽略装饰图像时设置为空(即alt =“”);除徽标外,文本不会放在图像中。
文本行之间的间距(称为行间距,行高或行距)至少是字体大小的1.5倍;段落之间的间距至少是字体大小的2倍;字母之间的间距(称为字母间距或跟踪)至少是字体大小的0.12倍;容许调整文本大小的功能(使用相对单位表示字体大小,例如em或rem) - 最高可达200% - 使用屏幕控制或经过WEB浏览器的缩放功能;清楚地定义段落和字母间距。
选择大多数用户之前遇到的经常使用字体。若是你选择一个普通的字体系列或一个具备独特字符的系列,那么“serif vs. sans-serif”并非什么大问题。避免使用不是惟一的专业显示字体或字体系列(例如能够互相镜像的字母或数字)。
夜间模式指的是在操做系统中能够设置高对比度模式,对应浏览器@media (prefers-color-scheme: dark)
下的样式会生效。
反色不是夜间模式,但大部分网站是浅色背景深色字,对应浏览器的@media (inverted-colors: inverted)
。
反色可能会致使颜色意思改变(红-绿 变成 青-粉)、图片或主题色调改变(蓝变橙)(How “invert brightness” can improve accessibility and help us use our devices - Matthew Atkinson)
浏览器隐身窗口不是夜间模式,只是深色窗体。
利用css自定义属性+媒体查询配置(How to get dark mode working with CSS - Frank Lämmer)
网站上没有任何内容每秒闪烁超过三次
使用ARIA语义标识分区
ARIA role标识提供了一种识别网页组织和结构的强大方法。经过对页面的各部分进行分类和标记,它们使得经过布局可视地传达的结构信息可以以编程方式表示。屏幕阅读器利用标志性角色为页面的重要部分提供键盘导航。标识区域也能够用做“跳过连接”的目标,并经过浏览器扩展用于加强的键盘导航和屏幕阅读器支持。
故意用presentation角色隐藏语义
presentation的三个常见用途是:
关于子元素自动隐藏语义的角色
要求全部子元素都具备访问性的角色是:
button,checkbox,img,math,menuitemcheckbox,menuitemradio,option,progressbar,radio,scrollbar,separator,slider,switch,tab
The Nine States of Design - Vince Speelman 提到9种状态,他们是:
ARIA角色,状态和属性模拟了流行桌面GUI(包括Microsoft Windows,macOS和GNOME)的GUI组件之间共享的可访问性行为和功能。一样,ARIA设计模式借鉴了这些平台的用户指望和键盘约定,始终如一地结合了常见的约定,旨在促进WEB上键盘界面的轻松学习和高效操做。
要使网页易于访问,全部交互式元素必须可经过键盘操做。此外,ARIA设计模式中描述的通用GUI键盘接口约定的一致应用很重要,特别是对于辅助技术用户。例如,考虑操做树的屏幕阅读器用户。正如熟悉的视觉样式帮助用户发现如何使用鼠标扩展树枝同样,ARIA属性为树提供了桌面应用程序中树的声音和感受。所以,屏幕阅读器用户一般会指望按右箭头键会展开折叠节点。由于屏幕阅读器知道元素是树,因此它还可以指示新手用户如何操做它。相似地,语音识别软件能够实现用于扩展和折叠分支的命令,由于它将元素识别为树而且能够执行适当的键盘命令。
全部平台上常见的主要键盘导航约定是,tab和shift+tab键将焦点从一个UI组件移动到另外一个UI组件,而其余键(主要是箭头键)将焦点移动到包含多个可聚焦元素的组件内。tab按键时焦点所遵循的路径称为标签序列或标签环。
开发要点
测试
axe-chrome扩展 免费扩展,提供页面可访问性测试
AT-browser-tests -github html测试用例,包括html5可访问性和JAWS
ESLint 中的 eslint-plugin-jsx-a11y 插件为你的 JSX 中的无障碍问题提供了 AST 的语法检测反馈。
检查工具
chrome://accessibility/
查看 可访问性树。屏幕朗读器
付费产品:JAWS (Windows) 和 Window Eyes (Windows).
免费产品: NVDA (Windows), ChromeVox (Chrome, Windows and Mac OS X), 和 Orca (Linux).
操做系统内置: VoiceOver (Mac OS X and iOS), Narrator (Microsoft Windows), ChromeVox (on Chrome OS),和 TalkBack (Android).
火狐中的 NVDA
NonVisual Desktop Access,简称 NVDA,是一个被普遍使用的 Windows 开源屏幕朗读器。
想要了解怎么样最好的使用 NVDA,请参考下面的指南:
WebAIM —— 使用 NVD A来评估网络的可无障碍访问性
Deque —— NVDA 键盘快捷键
Safari 中的 VoiceOver
VoiceOver 是苹果设备的自带屏幕朗读器。
想要了解如何激活以及使用 VoiceOver,请参考下面的指南:
WebAIM —— 使用 VoiceOver 来评估网络的可无障碍访问性
Deque —— OS X 中的 VoiceOver 键盘快捷键
Deque —— iOS 中的 VoiceOver 快捷键
Internet Explorer 中的 JAWS
Job Access With Speech又称 JAWS,是一个经常使用的 Windows 屏幕朗读器。
想要了解如何最好的使用 VoiceOver,请参考下面的指南:
WebAIM —— 使用 JAWS 来评估网络的可无障碍访问性
Deque —— JAWS 键盘快捷键
Google Chrome 中的 ChromeVox
ChromeVox是 Chromebook 的内置屏幕朗读器,同时也是 Google Chrome 中的一个插件。
想要了解如何最好的使用 ChromeVox,请参考下面的指南:
Google Chromebook 帮助 —— 使用内置屏幕朗读器
ChromeVox 经典键盘快捷键参考
布局
以清晰一致的方式构建导航和页面布局,并有多种查找内容的方式(例如搜索,站点地图,目录)。搜索引擎机器人就像组织良好的网站架构,这使得他们可以以更有意义的方式索引您的内容。若是您的网站难以浏览或使用,则可能会影响您的用户分析统计信息,包括 - 网站上的时间,浏览的网页和跳出率。反过来,这可能会损害您的SEO排名。至少,它会激怒你的用户。
标签
在适当的时候,使用访问HTML 5网页元素,如<article>
,<section>
,<header>
,<footer>
。这些元素对搜索引擎机器人和辅助技术设备更具描述性,而后是简单<div>
或<p>
元素。
标题标签应该是有序的,避免跳过标题标签。这意味着a <h1>
后跟<h2>
, <h2>
后跟 <h2>
或<h3>
依此类推。最佳作法是<h1>
每页只有一个。将<h1>
标签视为“ 第二页标题标签 ”,将相关性信号发送给搜索引擎机器人。
确保没有断开的连接。使用内部标记类型连接,但不要过分。提供描述性连接文本。避免使用像click here和的短语read more。跳过向连接添加描述性标题属性(将鼠标悬停在连接上时显示的文本)。添加连接标题不必定是错误的,但对SEO或网站可访问性来讲可能无济于事。
图像与多媒体
在命名图像时尽量保持一致和准确。避免使用非字母字符(例如7,%,&,$)并在单词之间使用短划线,而不是在图像名称或替代文本中使用下划线。将替代文字保留在125个字符之内。若是您须要更多字符,请使用标题文本或进一步描述页面主文本区域中的图像。编写可理解的替代文本,关键字填充对任何人都没有好处 - 使用屏幕阅读器的人会烦恼,搜索引擎机器人会惩罚你。
少便是多。尽量限制在设计中使用复杂的多媒体组件。提供访问媒体的其余方法。例如,有视频的副本和/或标题;为仅音频文件建立副本;将盲文格式的文件添加到您的媒体。有许多不一样类型的替代格式可供使用。
内容篇幅
不要使用粗体和斜体标记来突出显示单词,而是使用强烈和强调。在视觉上它们看起来彼此类似,但屏幕阅读器(在正确的模式下)将强调包围<strong>
和<em>
标签的单词,而它们将彻底忽略或仅略微改变<b>
和<i>
标签。
不要复制您的内容。搜索引擎机器人会注意到并惩罚你。您的用户会感到困惑。
项目符号和编号列表有助于为读者分解您的内容,使其更加用户友好。一些研究代表,搜索引擎机器人更喜欢使用列表和数字序号标记的内容而不是纯文本。
用户代理(例如,浏览器),可访问性API和辅助技术之间的关系
ACCESSIBILITY APIS
屏幕阅读器朗读某个按钮的工做流程
<button>Do a thing</ button>
。用户经过屏幕朗读器"点击"按钮流程
了解Accessibility API主要从Role(角色),State(状态),Properties(属性)三个方面入手。
角色分类以下:
section
包含与特定的,做者指定的目的相关的内容,而且足够重要以致于用户可能但愿可以容易地导航到该部分而且将其列在页面的摘要中。这样的页面摘要能够由用户代理或辅助技术动态生成。(子类:全部landemark role)aria-checked=false
)(必需的状态或属性:aria-checked )(支持的状态或属性:aria-readonly )menu
或menubar
包裹住的选项(必需的父元素角色:group,menu,menubar)(支持的状态或属性:aria-posinset; aria-setsize )menuitem
,值能够是:true,false或mixed。(子类角色:menuitemradio)(必需的父元素角色:menubar,menu)(默认 aria-checked=false
)menuitem
,一次只能选中一个(必需的父元素角色:group,menu,menubar)(默认 aria-checked=false
)select
列表中的可选项(必需的父元素角色:listbox)(必需的状态或属性:aria-selected)(支持的状态或属性:aria-checked;aria-posinset;aria-setsize)(默认 aria-selected=false
)aria-checked=false
)aria-orientation =vertical
,aria-valuemin=0
,aria-valuemax=100
,aria-valuenow=aria-valuemin和aria-valuemax的中间值
)aria-orientation=horizontal
,aria-valuemin=0
,aria-valuemax=100
,aria-valuenow=50
)aria-orientation =horizontal
,aria-valuemin=0
,aria-valuemax=100
,aria-valuenow=aria-valuemin和aria-valuemax的中间值
)aria-now=0
)aria-checked=false
)aria-selected=false
)tab
关联的资源的容器,其中每一个tab
都包含在tablist
中。tree
的选项。这是树中的一个元素,若是它包含一个子级别的树项元素组,则能够展开或折叠。(必需的父元素角色:group,tree)aria-orientation=vertical
)aria-orientation=vertical
)aria-orientation=horizontal
)radio
(必需的子元素:radio)(支持的状态或属性:aria-readonly;aria-required)tabpanel
的引用。(支持的状态或属性:aria-level,aria-mutiselectable,aria-orientation)grid
,其行能够以与tree
相同的方式展开和折叠。(必需的子元素:row,rowgroup->row)list
的articles
。位置的滚动可能致使articles
添加到列表的任一端或从列表的任一端移除。aria-level=2
)listitem
的section
元素(必需的子元素:group->listitem;item)presentation
相同none
相同aria-orientation:horizontal
)landmark
的。这些角色包含在此处,以使它们成为WAI-ARIA角色分类的明确组成部分。
landmark
包含项目,对象,做为一个总体,结合建立表单集合区域。aria-live=assertive
;aria-atomic=true
)aria-live=polite
)aria-live=off
)aria-live=polite
,aria-atomic=true
)几个HTML5分区元素自动建立ARIA标识区域。所以,为了向辅助技术用户提供页面的逻辑视图,了解使用HTML5分区元素的效果很是重要。
HTML5分区元素的默认role标识
aside
:complementary
footer
:contentinfo
在body
元素的上下文中header
:banner
在body
元素的上下文中main
:main
nav
:navigation
section
:region
当它具备使用aria-labelledby
或的可访问名称时aria-label
标识设计的通常原则
在其中一个标志性区域中 包括页面上的全部可感知内容并为每一个标志性区域赋予语义上有意义的做用是确保辅助技术用户不会忽视与其需求相关的信息的最有效方式之一。
第1步:肯定逻辑结构
第2步:为每一个区域分配 role标识
banner
,main
,complementary
和contentinfo
标识应该是顶级的标识。第3步:标记区域
h1-h6
),则能够使用该aria-labelledby
属性将其用做区域的标签。aria-label
属性提供标签。一个banner
标志性标识,在每一页的网站内开始面向网站内容。面向网站的内容一般包括诸如网站赞助商的徽标或身份以及特定于站点的搜索工具之类的内容。横幅一般出如今页面顶部,一般横跨整个宽度。
banner
标识。banner
标识意义的应该是一个顶级标识。document
和/或application
角色(例如,一般经过使用iframe
和frame
元素)时,每一个document
或application
角色能够具备一个banner
界标。若是页面包含多个banner
标识,则每一个标识都应具备惟一标签。
header
元素banner
在其上下文是body
元素时定义了一个标识。header
元素是banner
如下任何元素的后代时,它不被视为具备标识意义(请参阅HTML辅助功能映射 ):
article
aside
main
nav
section
若是header
未使用HTML5 元素技术,role="banner"
则应使用属性来定义banner
标识。
complementary
标识是文档,设计成与在DOM层次结构中的相似水平的主要内容互补的支撑部分,可是从主内容分离时仍然有意义。
complementary
标识应该是顶级标识(例如,不包含在任何其余标识内)。region
)。complementary
标识,则每一个标识都应具备惟一标签)。使用HTML5 aside
元素定义complementary
标识。
若是aside
未使用HTML5 元素技术,请使用role="complementary"
属性来定义complementary
标识。
一个contentinfo
标识是一个方法来识别一个网站中的每一个页面的底部常见的信息,一般称为页面的“脚注”,包括诸如版权和连接隐私和可访问性声明的信息。
contentinfo
标识。contentinfo
标识意义的应该是一个顶级标识。document
和/或application
角色(例如,一般经过使用iframe
和frame
元素)时,每一个document
或application
角色能够具备一个contentinfo
界标。若是页面包含多个contentinfo
标识,则每一个标识都应具备惟一标签。
footer
元素contentinfo
在其上下文是body
元素时定义了一个标识。footer
元素是contentinfo
如下任何元素的后代时,它不被视为具备标识意义:
article
aside
main
nav
section
若是footer
未使用HTML5 元素技术,role="contentinfo"
则应使用属性来定义contentinfo
标识。
form
标志性标识包含的项目和对象,做为一个总体,结合起来,创造一种形式的集合,当没有其余命名的标识是适当的区域(如主或搜索)。
search
标识而不是form
标识。form
具备标识意义应该有一个标签,以帮助用户了解表单的目的。form
标识的标签应对全部用户可见(例如h1-h6
元素)。form
标识,则每一个标识都应具备惟一标签。form
HTML文档中的标识中包含的控件应使用本机主机语义:
button
input
select
textarea
HTML5 form
元素form
在具备可访问名称(例如aria-labelledby
,aria-label
或title
)时定义标识。
使用它role="form"
来识别页面的区域; 不要用它来识别每一个表单字段。
main
界标标识网页的主要内容。
main
标识。main
标识意义的应该是一个顶级标识。document
和/或application
角色(例如,一般经过使用iframe
和frame
元素)时,每一个document
或application
角色能够具备一个main
界标。main
标识,则每一个标识都应具备惟一标签。使用HTML5 main
元素定义main
标识。
若是main
未使用HTML5 元素技术,请使用role="main"
属性来定义main
标识。
Navigation
标识提供了一种识别旨在用于网站或页面内容导航的连接组(例如列表)的方法。
navigation
标识,则每一个标识都应具备惟一标签。navigation
标识具备与navigation
页面上的另外一个标识相同的连接集,则对每一个navigation
标识使用相同的标签。使用HTML5 nav
元素定义navigation
标识。
若是nav
未使用HTML5 元素技术,请使用role="navigation"
属性来定义navigation
标识。
region
标识是用户可以浏览到部分是足够重要的页面包含内容的感知的部分。
region
具备标识意义必须有标签。region
标识,则每一个标识都应具备惟一标签。region
标识可用于识别名为标识未适当描述的内容。HTML5 section
元素region
在具备可访问名称(例如aria-labelledby
,aria-label
或title
)时定义标识。
若是section
未使用HTML5 元素技术,请使用role="region"
属性来定义region
标识。
search
标志性包含项目和对象,做为一个总体,结合建立搜索功能的集合。
search
标识而不是form
标识。search
标识,则每一个标识都应具备惟一标签。没有定义search
标识的HTML5元素。
该role="search"
属性定义了一个search
标识。
通用属性:
<true|false>
指示辅助技术是否将基于aria-relevant属性定义的更改通知呈现更改区域的所有或部分。<id>
表示容器或相关元中的当前项的元素。<String>
表示已实现的键盘快捷键,用于激活或为焦点提供焦点。<String>
定义一个字符串值标记当前元素。<additions|removals|text|all>
additions表示新增节点的时候作出反应;removals表示删除节点时重要操做;text表示文本改变是值得重视的;all等同于同时使用上面三个属性值。<String>
为元素的角色定义可读的,本地化的描述。小部件属性:
<inline|list|both|none>
表示用户的文本框的自动提示是否提供。若是是none
,则支持autocomplete
的元素其autocomplete
需设置为off
;若是是inline|list|both
则需设为on
<true|false|mixed>
true表示元素被选择;false表示元素未被选择;mixed表示元素同时有选择和为选择状态。<true|false>
true表示当前是非激活状态;false表示清除非激活状态。<undefined|true|false>
该属性对应HTML5的open属性。表示展开状态。默认为undefined, 表示当前展开状态未知。true表示元素是展开的;false表示元素不是展开的。<true|false>
true表示点击的时候会出现菜单或是浮动元素; false表示没有pop-up效果。<true|false>
true表示元素隐藏(不可见),false表示元素可见。<true|false>
表示元素值是否错误的。默认为false, 表示是OK的,若是为true, 则表示值验证不经过。<String>
标记当前元素。<Number>
表示等级。<true|false>
指示元素在显示时是否为模态。<true|false>
指示文本框是接受多行输入仍是仅接受一行。<true|false>
表示是否可多选。默认为false, 表示一次只能选择一个项。true表示一次能够选择多个项。例如手风琴展开收起效果,咱们能够使用aria-multiselectable来告知辅助设备,一次能够展开多个项仍是只有一个展开。<undefined|horizontal|vertical>
指示元素的方向,默认为undfined<String>
定义一个简短的提示(一个单词或短语),用于在控件没有值时帮助用户输入数据。提示能够是样本值或预期格式的简要描述。<undefined|true|false|mixed>
默认为undfined, 表示按下状态未知;true表示元素往下(按钮按下);false表示元素抬起;mixed表示元素同时有按下和没有按下的状态。<true|false>
表示是否只读。默认为false, 表示元素值能够被修改;true表示元素指不能被改变。<true|false>
多半用在表单控件中。对应HTML5中required属性。默认为false, 表示元素值能够为空;true表示元素值是必需的。<undefined|true|false>
默认为undefined,表示元素选择状态未知。true表示元素已选择;false表示未被选中。<ascending|descending|none|other>
表示表格或格栅中的项是以升序排列仍是降序排列。<Number>
容许的最大值。<Number>
容许的最小值。<Number>
表示当前值。<String>
定义等同于aria-valuenow人可读的文本。激活区域属性:
<true|false>
表示区域内容是否完整播报。值能够为true
和false
。当为true
时,表示辅助设备须要把基于 aria-relevant 属性定义的区域内容都通报给使用者;若是为false
则表示只须要通报修改的部分。<true|false|error>
表当前区域的忙碌状态。默认为false
, 表清除busy状态;可选为true
, 表该区域正在加载;或为error, 表示该区域验证无效。若是某个区域内有多个地方须要修改,须要所有修改完毕再通知使用者的话,就能够先将aria-busy
设为true
, 等到所有内容更新完毕后再设成false
. 该属性能够避免辅助工具在区域内容更新完毕前不断即时提醒使用者。off|polite|assertive|rude
绝大多数的更新应该在用户闲暇的时候告知,即时提示对用户是一种干扰。若是但愿内容彻底更新后再提示,能够使用aria-busy
。默认为off
, 表示不宣布更新;polite
表示只有用户闲时宣布;assertive
表示尽快对用户宣布;rude
表示即时提醒用户,必要的时候甚至中断用户。<additions|removals|text|all>
表示区域内哪些操做行为须要作出反应。能够空格分隔多个一块儿显示. additions表示新增节点的时候作出反应;removals表示删除节点时重要操做;text表示文本改变是值得重视的;all等同于同时使用上面三个属性值。关系属性:
<id>
当dom聚焦在composite,textbox,group或application时,标识当前获取焦点的子元素id<Number>
定义 table, grid 或 treegrid 的总列数<Number>
定义 table, grid 或 treegrid 的列索引或位置<Number>
定义 table, grid 或 treegrid 的cell或gridcell所跨越的列数<id1 id2 ...>
该属性定义了元素间不能经过文档结构决定的关联关系。aria-controls属性主要被role为group, region, 或widget的元素使用。<id1 id2 ...>
该属性定义了文档结构表现不出来的的元素间的相互关联性。该属性旨在经过标签提供更多用户可能须要的信息。若是指定了不仅一个id, 全部元素会合并在一块儿共同建立一条单独的描述。<id>
标识为对象提供详细的扩展描述的元素。<id1 id2 ...>
若是该属性值对应的是单独的id, 辅助技术会恢复目标元素的阅读;若是对应的是多个id, 则辅助技术会让用户去选择、导航到目标元素。<id1 id2 ...>
通常用在区域元素上,对于的id通常为对应的标题或是标签元素的id.关系型属性。<id>
表示所拥有的元素。值为目标元素id.<Number>
表示当前位置。用在设置和获取一个集合内某项的当前位置。<Number>
定义 table, grid 或 treegrid 的总行数<Number>
定义 table, grid 或 treegrid 的行索引或位置<Number>
定义 table, grid 或 treegrid 的cell或gridcell所跨越的行数<Number>
设置的尺寸大小值。
按钮是一个组件,可以让用户触发一个操做或事件,例如提交一个表单、打开一个对话框、取消操做、或执行删除操做。告知用户一个按钮会打开对话框的惯用方法是将“...”(省略号)添加到按钮上,例如“另存为...”
除了常规按钮组件外,WAI-ARIA还支持其余2种按钮类型:
aria-pressed
的值。例如,音频播放器中被标记为静音的按钮能够经过设置其按下状态为 true
,来指示声音被静音。重要提示:按钮状态改变时,其标签不改变。在此示例中,当按下状态为 true
时,其标签仍为“静音”,这样屏幕阅读器就会像这样朗读:“静音” 切换按钮“已按下”。或者,若是设计文档要求按钮标签从“静音”变为“取消静音”,则不须要设置 aria-pressed
属性。aria-haspopup
属性设置为 true
或者 menu
时,该按钮会被辅助技术视为一个菜单按钮。注意 按钮执行的动做类型与连接的功能大相径庭(参见 连接模式 )。组件的外观和角色与其提供的功能相匹配,这很是重要。可是,偶尔某些元素会有连接的视觉样式,却执行按钮的操做。在这种状况下,为元素添加
button
角色,能够帮助辅助技术用户理解元素的功能。可是,更好的解决方案是调整其视觉设计,以匹配其功能和ARIA角色。
示例
按钮示例:将可点击的HTML div
和 span
元素做为可访问命令和切换按钮的示例。
Toggle Buttons - Inclusive Components
A Theme Switcher - Inclusive Components
键盘交互
当按钮有焦点时:
Space
或Enter
:激活按钮Alt+U
分配给“向上”按钮,该按钮会将当前聚焦的列表项目移至列表中的较高位置,当焦点在列表中时,按 Alt+U
将焦点移出列表。WAI-ARIA角色,状态和属性
true
。true
,当被关闭时,该状态属性的值为false
。连接 组件提供了对资源的交互索引。目标资源能够是外部的的,也能够是本地的,例如,当前页面内、页面外、应用。
注意 做者们强烈建议使用原生语言的连接元素,例如一个具备
href
属性的HTMLA
元素。与其余 WAI-ARIA 组件角色同样,应用link角色到一个元素,浏览器不会自动添加标准连接行为,例如导航到连接目标或上下文菜单操做。当使用link
角色时,为元素提供这些特性是开发者的责任。
示例
连接举例: 用HTML标签 span
和 div
构建连接部件。
键盘交互
Enter
: 执行连接而且将焦点移至连接目标。Shift + F10
(可选): 打开连接的上下文菜单。WAI-ARIA 角色,状态和属性
包含连接文本或图形的元素有 link 角色 。
阅读更多链接 read more
示例
<a href="#" aria-labelledby="headline" class="read-more">Read More</a>
Tooltip是元素得到键盘焦点或鼠标悬停在其上时,显示的与元素相关的信息弹窗。它一般在一小段延迟后出现,并在 Escape
按下或鼠标移出时消失。
Tooltip组件不会得到焦点。包含可聚焦元素的悬停能够使用非模态对话框模式实现。
示例
Tooltips & Toggletips - Inclusive Components
键盘交互
Escape: 关闭工具提示框。
注意
- 当工具提示组件显示时,焦点停留在触发元素上。
- 若是当触发元素得到焦点时唤起工具提示组件,当元素失去焦点时(onBlur),工具提示组件消失。若是鼠标移入唤起工具提示组件,则鼠标移出时消失。
WAI-ARIA 角色,状态和属性
非装饰性img务必加上具备描述性的alt。
使用alt而不是title,如下任何一种都不能在浏览器和屏幕阅读器组合中可靠地工做。
非空title的空alt
<img src="a.gif" alt="" title="some text">
非空title,没有alt
<img src="a.gif" title="some text">
Short note on use of alt=”” and the title attribute
关于站点图标
<img>
须要具备alt属性。若是图像是信息性的,请将该等图像设置为该图像alt的描述性替代。关于SVG
让屏幕阅读器和语音识别工具等辅助技术(AT)能够访问SVG的最佳方法是使用<svg>
标签将其直接放入HTML中
避免使用<embed>
,<object>
或<img>
元素,由于它们不像浏览器那样支持内联SVG
在SVG标记中包含一个<title>
和<description>
使用aria-labelledby=""
和引用标题和描述元素的id值
使用该role=""
属性为SVG提供工做
在SVG添加中“隐藏”屏幕阅读器中的元素 role="presentation"
在考虑可访问性的状况下构建您的媒体!在开始时使用可访问性比在之后尝试使用它更容易。全部组件都是如此,尤为是媒体组件。
确保您的播放器能够访问,并包含暂停,中止和播放媒体的控制元素。
不要自动播放媒体。这可能会形成混乱和烦恼。
确保您的媒体有其余方法来获取内容。例如,添加音频文件的脚本。
a11y-音频示例
在考虑可访问性的状况下构建您的媒体!在开始时使用可访问性比在之后尝试使用它更容易。全部组件都是如此,尤为是媒体组件。
radio group是一组可勾选按钮,称为单选按钮,一次只能勾选一个按钮。一些实现能够在勾选状态下的全部按钮初始化该集合,以迫使用户在移动焦点以前勾选其中一个按钮。
示例
键盘交互
对于工具栏中不包含的radio group
本节介绍为大多数radio group实施的键盘交互。对于嵌套在工具栏内的radio group的特殊状况,请使用如下部分中描述的键盘交互。
Tab
和Shift + Tab
:将焦点移入和移出radio group。当焦点移动到radio group时:Space
:若是还没有选中,则检查聚焦单选按钮。Right Arrow
和DownArrow
:将焦点移动到组中的下一个单选按钮,取消选中先前聚焦的按钮,而后选中新聚焦的按钮。若是焦点位于最后一个按钮上,则焦点移动到第一个按钮。Left Arrow
and Up Arrow
:将焦点移动到组中的上一个单选按钮,取消选中先前聚焦的按钮,而后选中新聚焦的按钮。若是焦点在第一个按钮上,则焦点移动到最后一个按钮。注意
上面描述的初始焦点行为与某些浏览器为本机HTMLradio group提供的行为略有不一样。在某些浏览器中,若是未选择任何单选按钮,则使用Shift + Tab
将焦点移动到收音机组中会将焦点放在最后一个单选按钮而不是第一个单选按钮上。
对于工具栏中包含的radio group
由于箭头键用于在工具栏的元素之间导航而Tab键将焦点移入和移出工具栏,当radio group嵌套在工具栏内时,radio group的键盘交互与收音机的键盘交互略有不一样不在工具栏内的组。例如,用户须要可以在全部工具栏元素之间导航,包括单选按钮,而无需更改选中的单选按钮。所以,当使用箭头键浏览工具栏中的单选按钮组时,选中的按钮不会更改。嵌套在工具栏中的radio group的键盘交互以下。
Space
:若是未选中聚焦单选按钮,则取消选中当前选中的单选按钮并检查聚焦单选按钮。Enter
(可选):若是未选中聚焦单选按钮,则取消选中当前选中的单选按钮并检查聚焦单选按钮。不然,什么都不作。Right Arrow
:Left Arrow
:Down Arrow
(可选):将焦点移动到收音机组中的下一个单选按钮。若是焦点位于收音机组中的最后一个单选按钮上,则将焦点移至组中的第一个单选按钮。
-Up Arrow
(可选):将焦点移动到radio group中的上一个单选按钮。若是焦点位于收音机组中的第一个单选按钮上,则将焦点移至组中的最后一个单选按钮。
注意
工具栏中的单选按钮一般以更像切换按钮的方式设置样式。有关示例,请参阅简单编辑器工具栏示例
WAI-ARIA角色,状态和属性
radiogroup
的元素中或由其拥有。aria-checked
设置为true。若是未选中,则将aria-checked
设置为false
。aria-labelledby
引用的可见标签,或具备用aria-label
指定的标签。radiogroup
元素具备由aria-labelledby
引用的可见标签或具备用aria-label
指定的标签。aria-describedby
属性的radiogroup
元素或无线电元素引用。开关和复选框是相似的组件,由于它们具备 on(checked) 和 off(unchecked)状态。
但屏幕朗读器仍会识别复选框的语义,须要加上role="switch"
。
另外一种实现方式是button加上role="switch"
示例
role =“search”
中包装搜索组件,以增长其对辅助技术的可发现性。label
元素将文本与表单元素明确关联。标签的for
属性必须与表单控件的id
彻底匹配。label
元素。例如:标记为搜索的按钮旁边的搜索字段。在这些状况下,您仍应在标记中添加标签,但您能够在视觉上隐藏它。WAI-ARIA支持两种类型的 checkbox:
三态复选框的一种常见使用场景是在软件安装时,一个单独的三态复选框用来表明和控制整个安装选项组的状态。而且,该组中的每一个选项均可以单独使用双态复选框开启或关闭。
用户仅使用一个操做,就能够改变三态复选框组中全部选项的状态:
示例
mixed
的 aria-checked
值制做一个组件。键盘交互
当复选框拥有焦点时, 按 Space 键来改变复选框的状态
WAI-ARIA角色,状态和属性
aria-labelledby
关联可见标签:
checkbox
元素里面。checkbox
的元素上经过 aria-labelledby 属性的值为一个可见的内容。checkbox
元素上。true
。false
。mixed
。单选按钮组,是一个可选中按钮的组合,被称为单选按钮,且在该组合中,只有一个按钮处于选中状态。
<fieldset>
包围整个复选框或单选按钮组。<legend>
提供了分组的说明。示例
键盘交互
Space
: 若是该按钮尚未被选中,则选中当前聚焦的单选按钮。Right Arrow
和 Down Arrow
: 移动焦点到组合中的下一个单选按钮,取消选中先前聚焦的按钮,而且选中新聚焦的按钮。若是焦点在最后一个按钮上,焦点移至第一个按钮。Left Arrow
和 Up Arrow
: 移动焦点到组合中的上一个单选按钮,取消选中先前聚焦的按钮,并选中新聚焦的按钮。若是焦点在第一个按钮上,焦点移至最后一个按钮。注意 上文所述的初始聚焦行为,与一些浏览器为原生HTML按钮组所提供的行为略有不一样。在某些浏览器中,若是没有选中任何一个单选按钮,使用
Shift+ Tab
将焦点移至单选按钮组,焦点将会被放置在最后一个单选按钮,而不是第一个单选按钮。
WAI-ARIA 角色,状态和属性
radio
元素的 aria-checked 将被设置为 true
。 若是没有被选中,aria-checked 设置为 false
。radio
元素由其内容标记,使用 aria-labelledby,索引一个可见标签,或使用 aria-label 指定一个标签。radiogroup
使用 aria-labelledby
索引一个可见标签,或者使用 aria-label
指定一个标签。radiogroup
元素或 radio
元素使用 aria-describedby 属性索引。滑块是供用户从给定范围内选择值的输入控件。滑块一般有个拖动触点,能够沿着条或轨道移动来改变滑块的值。
示例
aria-orientation
和 aria-valuetext
属性的滑块示例 : 三个恒温控制滑块,使用 aria-orientation
和 aria-valuetext
。键盘交互
Right Arrow
: 按必定量增长滑块的值;Up Arrow
: 按必定量增长滑块的值;Left Arrow
: 按必定量减少滑块的值;Down Arrow
: 按必定量减少滑块的值;Home
: 将滑块设置为其范围内的最小值;End
: 将滑块设置为其范围内的最大值;Page Up
(可选): 大幅度增长滑块的值(比 Up Arrow
增长的值大)。Page Down
(可选): 大幅度减少滑块的值(比 Down Arrow
减少的值大)。注意
- 焦点放在滑块上(鼠标用户能够移动的视觉对象,也称为thumb组件)。
- 在某些场景下,反转上面指定值变化的方向(例如: Up Arrow 减少滑块的值),能够建立更直观的体验 _(译者注:能够理解为滑块为纵向方向排列)
WAI-WRIA 角色、状态和属性
aria-valuenow
的值对用户不友好,例如周几通常使用数字呈现,将 aria-valuetext 属性设置为一个字符串,这样滑块值更易理解,例如 "Monday"。vertical
。滑块的 aria-orientation
的默认值是 horizontal
。多触点滑块是具备两个或更多触点的滑块,每一个触点都在一组相关值中设置值。例如,在产品搜索中,能够使用双触点滑块使用户可以设置搜索的最小和最大价格限制。在许多双触点滑块中,不容许触点彼此经过,例如当滑块设置范围的最小值和最大值时。例如,在价格范围选择器中,设置范围下限的触点的最大值受限于设置范围上限的触点的当前值。相反,上端触点的最小值受到下端触点的当前值的限制。可是,在某些多触点滑块中,每一个触点都会设置一个不依赖于其余触点值的值。
示例
多触点滑块示例:演示双触点滑块,用于选择航空公司航班和酒店预订的价格范围。
键盘交互
WAI-ARIA角色,状态和属性
aria-valuenow
属性设置为表示滑块当前值的十进制值。aria-valuemin
属性设置为十进制值,表示滑块的最小容许值。aria-valuemax
属性设置为十进制值,表示滑块的最大容许值。aria-valuemin
或aria-valuemax
的值。aria-valuenow
的值不是用户友好的,例如,星期几由数字表示,则aria-valuetext
属性被设置为使滑块值可理解的字符串,例如“Monday”。aria-labelledby
会引用它。不然,滑块元素具备由aria-label
提供的标签。aria-orientation
设置为垂直。滑块的aria-orientation
的默认值是水平的。数值调节按钮是个将值限定在离散数值集合或范围的输入组件。例如,在一个设置闹钟的部件中,一个数值调节按钮容许用户在0-59间选择分钟。
数值调节按钮一般有三个组件,包含一个显示当前值的文本框,一个增长按钮,一个减少按钮。通常来讲,文本框是惟一可聚焦组件,由于增长和减少功能可以使用光标键访问,通常来讲,文本框还容许用户直接编辑其值。
若是数值范围很大,数值调节按钮支持以较小和较大的幅度调节其值。例如,在闹钟示例中,用户能够使用 Up Arrow
和 Down Arrow
以1分钟的步长改变值,而且能够使用 Page Up
和 Page Down
以10分钟的步长改变值。
示例
键盘交互
Up Arrow
: 递增。Down Arrow
: 递减。Home
: 若是数值调节按钮具备最小值,则设置数值调节按钮的值为最小值。End
: 若是数值调节按钮具备最大值,则设置数值调节按钮的值为最大值。Page Up
(可选): 以大于 Up Arrow
的调节幅度增长值。Page Down
(可选): 以大于 Down Arrow
的调节幅度减少值。注意
- 操做过程当中焦点仍在文本字段上。
- 适用于设备平台的标准单行文本编辑键:
- 包括输入键,光标移动,选择和文本操做。
- 用于编辑功能的标准键分配依赖于操做系统。
- 提供文本编辑功能的最强大的方法须要依靠浏览器,浏览器为HTML文本输入类型的组件和具备
contenteditable
HTML属性的元素支持文本编辑功能。- 重要: 确保JavaScript不会干扰浏览器提供的文本编辑功能,方法是捕获用于执行它们的事件。
WAI-WRIA 角色、状态和属性
aria-valuenow
的值用户很差理解,例如周几通常使用数字呈现,能够将spinbutton元素的 aria-valuetext 属性设置为一个字符串,让数值选择按钮的值更好理解,例如 "Monday"。listbox 控件呈现了一个选项列表,并容许用户选择一个或多个。容许选择一个选项的列表框是一个单选列表框;容许选择多个选项的列表框是一个多选列表框。
当屏幕阅读器呈现一个列表框,可能会渲染出其名称、状态和每一个选项在列表中的位置。选项的名称是一个由浏览器计算获得的字符串,通常来自选项元素的内容。做为一个平面字符串(flat string),名称不包含任何语义信息。所以,若是选项包含一个语义元素,例如一个标题,屏幕阅读器用户不会访问到该语义。另外,listbox角色传递给辅助技术的交互模型,不支持选项内元素的交互。由于listbox组件的这些特性,它并无提供可访问方式来呈现交互元素的列表,例如连接、按钮或复选框。为了呈现这些交互元素的列表,参见 grid。
为了让屏幕阅读器用户容易感知和理解,避免使用长选项名称。当选项被朗读时,选项的总体名称做为一个独立语音单元被朗读。当一次按键操做就朗读太多的信息,将会很难理解。长的名称会增长朗读中断的发生,而抑制信息的感知,由于用户通常不得不从新朗读整个选项。并且,若是用户不理解说了什么,在listbox组件中,屏幕阅读器用户很难实现按字、词、短语朗读。
选项集中每一个选项名称使用相同的单词或短语开头也能够显著下降键盘和屏幕阅读器用户的可用性。滚动列表来找到特定选项,对屏幕阅读器用户来讲很是费时,由于他们在听到每一个选项的不一样以前,都必须听到重复的单词或短语。例如,若是一个选择城市的列表框,其选项的每一个城市名称前面都有国家名称,若是每一个国家都列出了不少城市,屏幕阅读器用户将要不得不在听到城市名称以前听到国家名称。在这种状况下,最好有2个列表框,一个用于国家,一个用于城市。
键盘交互
对于一个垂直向的列表框:
Down Arrow
: 移动焦点到上一个选项。可选,在一个单选列表框中,选择也能够跟随焦点移动。Up Arrow
: 将焦点移至前一个选项。一般,一个单选列表框,选择也能够跟随焦点移动。Home
(可选): 将焦点移至第一个选项。一般,一个单选列表框,选择也能够跟随焦点移动。对于超过5个选项的列表,强烈建议支持此键。End
(可选): 将焦点移至最后一个选项。一般,一个单选列表框,选择也能够跟随焦点移动。对于超过5个选项的列表,强烈建议支持此键。Shift
或Control
,或一种替代模型,当导航时须要用户按住修饰键,防止丢失选择状态。
Space
: 改变焦点选项的选择状态。Shift + Down Arrow
(可选): 将焦点移至下一个选中项而且切换选项的选中状态。Shift + Up Arrow
_(可选)_: 将焦点移至前一选中项而且切换选项的选中状态。Shift + Space
(可选): 从最近选中的项目中选择相邻的元素聚焦。Control + Shift + Home
(可选): 选择从聚焦的选项到第一个选项的全部的选项。Control + Shift + End
(可选): 选择从聚焦的选项到最后一个选项的全部选项。Control + A
(可选): 选择列表中的全部选项。或者,若是选择了全部选项,它也可能取消选择全部选项。Shift
或 Control
修饰键移动焦点不会取消选择全部已选择节点,除非当前聚焦节点:
Shift + Down Arrow
: 将焦点移至下一个选项并切换选项的选择状态。Shift + Up Arrow
: 将焦点移至上一个选项并切换选项的选择状态。Control + Down Arrow
: 将焦点移至下一个选项但不改变选项的选择状态。Control + Up Arrow
: 将焦点移至上一个选项但不改变选项的选择状态。Control + Space
: 改变焦点选项的选择状态。Shift + Space
(可选): 从最近选中的项目中选择相邻的元素聚焦。Control + Shift + Home
(可选): 选择从聚焦的选项到第一个选项的全部的选项。Control + Shift + End
(可选): 选择从聚焦的选项到最后一个选项的全部选项。Control + A
(可选): 选择列表中的全部选项。或者,若是选择了全部选项,它也可能取消选择全部选项。注意
listbox
角色支持 aria-activedescendant 属性,当经过键盘导航(keybord navigation)时,它提供一种非传统方式在 treeitem
元素间移动DOM焦点。有关详细信息,请参阅 Managing Focus in Composites Using aria-activedescendantDown Arrow
行为和上面描述的 Right Arrow
同样,反之亦然。Up Arrow
行为和上面描述的 Left Arrow
同样,反之亦然。WAI-ARIA 角色,状态和属性
listbox
角色元素的DOM后代,或者在列表框元素上使用 aria-owns 属性索引。listbox
角色的元素相关联。true
。listbox
的元素将 aria-multiselectable 设置为 true
。true
。false
。listbox
角色元素的 aria-orientation 设置为 horizontal
。for =“”
和id =“”
值匹配。ID在每一个页面上必须是惟一的,每一个惟一表单元素只能连接一个标签。id =“my-error-message”
,则输入应该具备aria-describedby =“my-error-message”
。手风琴是一组垂直堆叠的交互式标题,每一个标题包含标题,内容片断或表示内容部分的缩略图。标题用做控件,使用户可以显示或隐藏其相关的内容部分。当在单个页面上呈现多个内容部分时,一般使用折叠来减小滚动的须要。
经过如下术语来理解手风琴:
手风琴标题:
表示内容模块的标签或缩略图,同时也用来展开内容,在某些实现中,也用来隐藏内容模块。
手风琴面板:
与手风琴标题相关联的内容模块
在某些手风琴中,手风琴标题旁边有永久可见的其余元素。例如,每一个手风琴标题都伴随一个菜单按钮来提供每一个面板的访问操做。并且在某些状况下,手风琴面板可能永久展开可见。
示例:
键盘交互
Enter
或 Space
:Down Arrow
(可选): 若是焦点在一个手风琴标题上,则将焦点移至下一个手风琴标题。若是焦点在最后一个手风琴标题上,则不响应或将焦点移至第一个手风琴标题。Up Arrow
(可选): 若是焦点在一个手风琴标题上,则将焦点移至上一个手风琴标题,若是焦点在第一个手风琴标题上,则不响应或将焦点移至手风琴的最后一个标题。Home
(可选): 当焦点在手风琴的标题上,将焦点移至第一个手风琴标题End
(可选): 当焦点在手风琴的标题上,将焦点移至最后一个手风琴标题Control + Page Down
(可选): 若是焦点在手风琴面板内,将焦点移至面板标题上。若是焦点在手风琴标题上,将焦点移至前一个手风琴标题。若是焦点在第一个手风琴标题上,则不响应或将焦点移至最后一个手风琴标题。Control + Page Up
(可选): 若是焦点在手风琴面板内,将焦点移至该面板的标题上。若是焦点在手风琴标题,将焦点移至前一个手风琴标题。若是焦点在第一个手风琴标题,容许不响应操做或将焦点移至最后一个手风琴标题角色、状态、属性
button
都被具备 heading 角色的元素包裹,且该元素设置了合适的 aria-level 值,对应页面的信息结构。
heading
和 aria-level
元素,例如HTML标题标签,能够使用原生语言元素。button
元素是 heading
元素内的惟一元素。也就是说,若是有其余永久可见元素,他们不能被包含在 heading
元素中。button
元素的 aria-expanded 属性设置为 true
。若是面板折叠的,aria-expanded属性设置为 false
。button
元素 aria-controls 设置为包含手风琴面板的内容元素的ID。button
元素的 aria-disabled 设置为 true
。region
扩展的状况下,使用 region
角色,例如在一个包含超过6个面板的手风琴中,可能会同时展开。region
角色对屏幕阅读器用户对于结构的感知特别有帮助。面包屑包含当前页面的父页面的连接列表,该列表是层级顺序的。它能够帮助用户在网站或网络应用程序中找到本身的位置。面包屑一般水平放置在页面的主要内容以前。
示例
键盘交互
不适用
WAI-ARIA 角色,状态和属性
page
。若是呈现当前页面的元素不是个连接,aria-current
可选。轮播图经过顺序显示一个或多个幻灯片的子集来呈现一组项目,称为幻灯片。一般,一次显示一张幻灯片,用户能够激活隐藏当前幻灯片的下一个或上一个幻灯片控件,并将下一张或上一张幻灯片“旋转”到视图中。在一些实施方式中,播放在页面加载时自动开始,而且一旦显示全部幻灯片,它也能够自动中止。虽然幻灯片能够包含任何类型的内容,可是每一个幻灯片仅包含单个图像的图像轮播是常见的。
确保全部用户都能轻松控制而且不会受到滑动旋转的不利影响,这是使轮播图可访问性的一个重要方面。例如,若是在屏幕上看不到的幻灯片被错误地隐藏(例如,在屏幕外显示),则屏幕阅读器体验可能使人困惑和被误导。相似地,若是幻灯片自动播放但使用屏幕阅读器的用户不知道,则用户能够读取幻灯片1上的元素,对下一个元素执行朗读命令,而不是听到幻灯片1上的下一个元素,幻灯片2中的元素,不知道刚刚朗读的元素来自全新的上下文。
提供足够播放控制所需的功能包括:
示例
如下术语用于描述轮播的组件。
slide
一组内容容器中的单个内容容器,用于保存要由轮播呈现的内容。
rotation control
用于中止和启动自动幻灯片旋转的交互式元素。
next slide control
交互式元素,一般为箭头样式,显示旋转序列中的下一张幻灯片。
previous slide control
交互式元素,一般设置为箭头,显示旋转序列中的上一张幻灯片。
slide picker controls
一组元素,一般称为小点,使用户可以在旋转序列中选择要显示的特定幻灯片。
键盘交互
Tab
和Shift +Tab
:将焦点移动到页面选项卡序列指定的轮播的交互元素 - 不须要为Tab
建立脚本。Tab
键序列中的第一个元素。它必须先于旋转内容,以便轻松定位。WAI-ARIA 角色,状态和属性
本节介绍三种轮播样式的元素组成:
基本轮播图元素
carousel
。aria-roledescription
设置为“carousel”,所以标签不包含单词“carousel”。aria-pressed
。slide
。aria-roledescription
设置为“slide”,所以标签不包含单词“slide”。off
:若是转盘自动播放。polite
:若是轮播图不自动播放。带标签的轮播元素
带标签的转盘的结构与基本的转盘相同,不一样之处在于:
tabpanel
代替group
,而且它没有aria-roledescription
属性。tab
元素,所以激活选项卡会显示与该选项卡关联的幻灯片。tablist
元素中,其中可访问的名称由aria-label的值提供,用于标识选项卡的用途,例如“选择要显示的幻灯片”。tab
,tablist
和tabpanel
实现选项卡模式中指定的属性。group
素的值。aria-disabled
设置为true
。注意:aria-disabled
优先于HTMLdisabled
属性,由于这是屏幕阅读器用户受益于页面Tab序列中包含的禁用按钮的状况。menu 是一个组件,为用户提供一个选择列表,例如一组操做或功能。菜单通常经过激活 menu button 打开或变为可见,选择菜单中一个会打开子菜单的项目,或激活一个命令,例如Windows中的 Shift + F10 ,来打开上下文的特定菜单。当用户激活菜单中的选项时,菜单一般会关闭,除非是打开子菜单。
持续可见的菜单是 menubar。 菜单栏一般是水平的,一般用以建立相似不少桌面应用中窗口顶部附近的菜单栏,让用户快速访问一组连续的命令。
标识菜单项目会唤起一个对话框的常规作法是在菜单标签后面添加"…"(省略号),例如"另存为 …"。
示例
键盘交互
如下为键盘行为的假定描述:
menubar
包含数个 menuitem 元素。menubar
中的全部项目都有子菜单,全部子菜单都有不少垂直排列的项目。menuitem
也有垂直排列的子菜单。阅读如下内容时,请记住:
menuitem
, menuitemradio
, 或 menuitemcheckbox
,角色,被成为是菜单项目。menuitem
元素,则使用特定的角色名称。menu
角色的元素。menu
打开,或者当 menubar
接收焦点时,键盘焦点设置在第一个项目上。全部项目都是可聚焦的,如 Keyboard Navigation Inside Components。Enter
: 当焦点位于一个具备子菜单的 menuitem
上时,打开子菜单并将焦点放在其子菜单的第一个项目上。 - 不然,激活该项目并关闭菜单。Space
:
menuitemcheckbox
时,更改状态而不关闭菜单。menuitemradio
上时,不会关闭菜单,选中聚焦的 menuitemradio
,并取消选中同一组中的任何其余已选中的 menuitemradio
元素。menuitem
上时,打开子菜单并将焦点放在其子菜单的第一个项目上。menuitem
元素时,激活 menuitem
并关闭菜单。Down Arrow
:
menubar
里的一个 menuitem
时,打开它的子菜单,并将焦点放在子菜单中的第一个项目上。menu
上,将焦点移至下一个项目,可选的,从最后一个项目返回到第一个项目。Up Arrow
:
menu
上时,将焦点移至上一个项目,可选的,从第一个项目移至最后一个。menuitem
中一个 menubar上时,打开其子菜单,并将焦点放置在子菜单的最后一个项目上。Right Arrow
:
menubar
上,将焦点移至下一个项目,可选的,从最后一个项目返回到第一个项目。menu
的一个具备子菜单的 menuitem
上时,打开子菜单并将焦点放置在其第一个项目上。menu
中的不具备子菜单的项目上时,执行如下3个操做:
menuitem
中的下一个 menubar.
menuitem
的子菜单但不用将焦点移至子菜单,或者打开该menuitem
的子菜单,并将焦点放置在子菜单的第一个项目上。menubar
,例如从一个菜单按钮打开一个菜单,当焦点在一个没有子菜单的项目上时, Right Arrow 不会执行任何操做。Left Arrow
:
menubar
上时,将焦点移至上一个项目,可选的,从第一个项目移至最后一个。menuitem
。menuitem
中的前一个menubar
.menuitem
的子菜单但不用将焦点移至子菜单,或者打开该menuitem
的子菜单,并将焦点放置在子菜单的第一个项目上。Home
: 若是不支持光标键循环,则将焦点移至当前menu
或`menubar 的第一个子项。End
: 若是不支持光标键循环,则将焦点移至当前menu 或
menuba`r 的最后一个子项。Escape
: 关闭包含焦点的菜单并将焦点返回到元素或上下文,例如打开菜单的菜单按钮或父级`menuitemTab
: 将焦点移至Tab序列中的下一个元素,而且若是得到焦点的项目不在 menubar
中,关闭其 menu
和全部打开的父级 menu
容器Shift + Tab
: 将焦点移至Tab序列中的上一个元素,而且若是得到焦点的项目不在 menubar
中,关闭其 menu
和全部打开的父级 menu
容器 。注意
- 禁用的菜单项是可聚焦的,但没法激活。
- 菜单中的separator不可聚焦或交互。
- 做为上下文操做的结果,若是一个菜单被打开或菜单栏得到焦点, Escape 或 Enter 可能会将焦点返回到调用的上下文。例如,当在编辑文本时按下快捷键时,一个富文本编辑器的菜单栏可能会得到焦点,例如alt + F10。在这种状况下,点击Escape 或从菜单中激活一个命令可能会将焦点返回给编辑器。
- 尽管建议开发者不要这样作,但仍是有一些导航菜单栏的实现,其
menuitem
元素既能执行功能又能打开子菜单。在这种实现中, enter 和 Space 执行导航功能,例如,加载新内容,而Down Arrow则在水平menuitem
中打开与其相关联的子菜单- 当
menubar
中的项目垂直排列,menu
容器中的项目水平排列时:
A. Down Arrow 执行 Right Arrow 如上所述的表现,反之亦然。
B. Up Arrow 执行 Left Arrow 如上所述的表现,反之亦然。
WAI-ARIA角色,状态和属性
menuitem
被认为是一个父级。一个子菜单的菜单元素被它的父级 menuitem
包含或拥有。menu
的aria-haspopup 设置为 true
。tabindex
设置为-1
, 除了菜单栏中的第一个项目的 tabindex
设置为 0
。true
.true
.vertical
. 菜单栏的 aria-orientation
属性的默认值是 horizontal
。horizontal
. 。菜单栏的 aria-orientation
属性的默认值是 vertical
。注意 若是在菜单容器上设置aria-owns ,来包含不是该容器DOM子元素的元素,那么这些元素将按照它们被引用的顺序出如今读取顺序中,而且在全部DOM子元素以后。管理焦点的脚本须要确保视觉焦点顺序与此辅助技术阅读顺序相匹配。
菜单按钮是一个能够打开 menu 的 button 。它的样式一般与典型按钮同样,且带有一个向下的箭头或三角,来提示用户激活按钮会展开一个菜单。
示例
a
建立的菜单按钮,展开是一个表现为连接的项目菜单。element.focus()
进行管理的。使用aria-activedescendant的操做菜单按钮示例:一个打开菜单上的高亮选项卡的按钮,一般用aria-activedescendant进行管理。
键盘交互
Enter
: 打开菜单并将焦点置于第一个菜单项上。Space
: 打开菜单并将焦点置于第一个菜单项上。Down Arrow
: 打开菜单并将焦点置于第一个菜单项。Up Arrow
: 打开菜单并将焦点置于最后一个菜单项。WAI-ARIA角色,状态和属性
button
角色的元素,其 aria-haspopup 属性为 menu
或 true
。button
角色的元素的 aria-expanded 属性设置为 true
。 当菜单收起时, 建议不设置 aria-expanded
属性。若是当菜单收起时,设置了 aria-expanded
属性,其值应该为 false
。button
角色的元素,其 aria-controls 属性具备特定的值,用来指向具备 menu
角色的元素。基本导航
全部导航元素都应该有一个<nav>
标签。
若是必须使用更通用的元素(如a)<div>
,请添加role="navigation"
到每一个导航栏以明确将其标识为辅助技术用户的标志性区域。
菜单应根据其个别功能进行标记。使用能够使用class="visuallyhidden">
, aria-label=""
或aria-labelledby=""
轻松地向您网站上的不一样菜单添加上下文。
移动导航
将<button>
元素用于移动导航图标。
若是您使用纯粹装饰的图标,请声明alt=""
,由于不须要其余信息。若是您使用的图标对功能很重要,请提供其余alt="_descriptive text goes here_"
信息。
当您在显示移动图标时添加描述性文本以便为按钮的用途提供更多上下文时,它对全部用户都颇有帮助。
将移动打开/关闭按钮放在<nav>
元素中,并使用它们切换导航的另外一个子包装器的状态。这将确保屏幕阅读器仍然能够发现导航地标,即便它处于关闭/隐藏状态。
尽量将分页器放在<nav>
元素中。
若是不使用<nav>
元素,则须要添加role="navigation"
到标记。注意:使用<nav>
元素时隐含了此角色,所以同时使用这两个元素有点多余。
标记包括aria-label="pagination"
用于描述导航类型的标记。
添加aria-current="page"
到指向当前页面的连接。这将告诉AT焦点连接指向当前页面。
aria-disabled="true"
禁用连接时添加到连接。
扩展器是一种控制内容部分的可见性的按钮。当隐藏受控内容时,它一般被设计为具备向右箭头或三角形的典型按钮,以暗示激活按钮将显示其余内容。当内容可见时,箭头或三角形一般指向下方。
示例
键盘交互
当扩展器控制具备焦点时:
Enter
:激活扩展器控制并切换扩展器内容的可见性。Space
:激活扩展器控制并切换扩展器内容的可见性。WAI-ARIA角色,状态和属性
button
。button
的元素将aria-expanded
设置为true
。false
。button
的元素具备为aria-controls
指定的值,该值引用包含显示或隐藏的全部内容的元素。工具栏 是一个对控件进行分组的容器,例如,按钮、菜单按钮、或复选框。
当一组控件在视觉上呈现为一个组合,能够使用 toolbar
角色来告知屏幕阅读器用户分组的呈现和目的。组合控件到工具栏,在键盘交互中是一个减小Tab停留数量的有效方式。
优化工具栏小部件的优势:
键盘交互
Shift + tab
反向浏览,若工具栏获取焦点,则将焦点设置在最后一个可聚焦的元素上。)Left Arrow
: 将焦点移至上一个控件。可选:焦点从第一个控件移至最后一个控件上。Right Arrow
: 将焦点移至下一个控件。可选:焦点从最后一个控件移至第一个控件上。Home
(可选): 将焦点移至第一个元素。End
(可选): 将焦点移至最后一个元素。注意
Down Arrow
与 Right Arrow
功能同样。Up Arrow
与 Left Arrow
功能同样。WAI-WRIA 角色、状态和属性
vertical
。其默认值为 horizontal
。<img>
都须要具备alt属性。若是图像用作传达信息,请将alt
设置为该图像的描述性替代。alt =“”
,这将向辅助技术用户传达图像对于理解页面不是必需的。a11y-卡片示例
Cards - Inclusive Components
alert 是一个呈现简短、重要信息的元素,以一种引发用户注意而不打断用户任务的方式。动态渲染的警告会被大多数屏幕阅读器自动朗读,在某些操做系统中,警告会触发警告提示音。与此同时,须要注意的是屏幕阅读器不会告知用户在加载完成前已经存在的警告。
由于警告是用来提供重要和潜在的时间敏感信息,而不会打扰用户继续工做,重要的一点是它不会影响键盘焦点。alert dialog 为那些必须打断工做流的状况设计的。
一样重要的是,避免设计自动消失的警告。一个消失太快的警告,可能致使不符合 WCAG 2.0 success criterion 2.2.3。另外一个重要的设计考虑是警告引发的终端频率。频繁打断会下降视障和认知障碍用户的可用性,这让知足 WCAG 2.0 success criterion 2.2.4 的需求更加困难。
示例
键盘交互
一个警告框(WAI-ARIA 活动区域)不须要任何键盘交互。
WAI-ARIA 角色,状态和属性
该组件的角色为 alert。
一个警告对话框是一个模态对话框,可中断用户的工做流程,以传达一个重要的信息,并得到响应。包含操做确认提示和错误消息确认。alertdialog 角色可以让辅助技术和浏览器从其余对话框中区分出警告对话框,这样就能给予警告对话框特殊对待,例如播放一个系统警告提示音。
示例
键盘交互
请参阅 modal dialog pattern 键盘交互部分。
WAI-ARIA 角色,状态和属性
alertdialog
的元素拥有如下状况中的一种:
alertdialog
的元素,具备 aria-describedby 属性来索引包含警告信息的元素。组合框是由两个不一样元素组合而成的小部件:1)单行文本框 2)用于帮助用户设置文本框值的关联弹出元素。弹出窗口能够是listbox(列表框),grid(网格),tree(树)或dialog(对话框)。许多实现还包括第三个可选元素 - 与文本框相邻的图形按钮,指示弹出窗口的可用性。若是建议可用,则激活按钮会显示弹出窗口。
默认状况下隐藏弹出窗口,触发其显示的条件取决于其实现。一些可能的弹出显示条件包括:
Down Arrow
键或激活"显示"按钮时显示,可能依赖于文本框的内容。使用任何形式的列表自动完成功能,弹出窗口可能会在用户键入时显示和消失。例如,若是用户键入一个两个字符串,触发五个要显示的建议,但而后键入造成一个没有任何匹配建议的字符串的第三个字符,弹出窗口可能会关闭,若是存在,则内联完成字符串消失。
构建视觉上紧凑的窗口小部件并容许用户从一组离散值中选择一个值时,一般listbox(列表框)或menu button(菜单按钮)钮更易于实现和使用。组合框的一个特征是将其与listbox(列表框)和menu button(菜单按钮)区分开来,组合框的值显示在编辑字段中。
所以,组合框为用户提供了listbox(列表框)和menu button(菜单按钮)都缺乏的功能,即可以选择部分或所有值以便复制到剪贴板。区分组合框和menu button(菜单按钮)小部件与列表框小部件的一个特征是它们提供撤销机制的能力。
在许多实现中,用户能够在组合框或菜单中导航该组容许值,而后经过按下escape
来决定恢复小部件在导航以前具备的值。相反,导航listbox(列表框)会当即更改其值,而escape
不会提供撤消机制。
注意:
ARIA 1.1中引入了组合框以弹出网格,树或对话框的选项。ARIA 1.1规范中所作的更改还增长了对代码模式的支持,该代码模式使辅助技术可以将文本框和弹出窗口呈现为可单独感知的元素。ARIA 1.0和1.1模式将在如下部分中介绍。虽然一旦辅助技术支持足够,建议使用ARIA 1.1模式,但没有计划弃用ARIA 1.0模式。
示例
键盘交互
Tab
:文本框位于页面Tab
访问顺序中。文本框键盘交互
当焦点位于文本框中时:
Down Arrow
:若是弹出窗口可用,请将焦点移至弹出窗口:
Down Arrow
以前自动选择了建议,则会根据自动选择的建议重点关注建议。Up Arrow
(可选):若是弹出窗口可用,则将焦点放在弹出窗口中的最后一个可聚焦元素上。Escape
:若是可见,则关闭弹出窗口。(可选)清除文本框。Enter
:若是自动选择了自动填充建议,则经过将输入光标放在文本框中可接受值的末尾或对值执行默认操做来接受建议。例如,在消息传递应用程序中,默认操做多是将接受的值添加到消息收件人列表,而后清除文本框,以便用户能够添加另外一个收件人。Alt +Down Arrow
(可选):若是弹出窗口可用但未显示,则显示弹出窗口而不移动焦点。Alt +Up Arrow
(可选):若是显示弹出窗口:
注意,适用于设备平台的标准单行文本编辑键:
列表框弹出键盘交互
当焦点位于列表框弹出窗口中时:
Enter
:经过关闭弹出窗口并将接受的值放在文本框中,并将输入光标放在值的末尾,接受列表框中的焦点选项。Escape
:关闭弹出窗口并将焦点返回到文本框。(可选)清除文本框的内容。Right Arrow
:将焦点返回到文本框而不关闭弹出窗口,并将输入光标向右移动一个字符。若是输入光标位于最右侧的字符上,则光标不会移动。Left Arrow
:将焦点返回到文本框而不关闭弹出窗口,并将输入光标向左移动一个字符。Backspace
(可选):将焦点返回到文本框并删除光标前的字符。Delete
(可选):将焦点返回到文本框,若是选择了建议,则删除选定的状态,并删除内联自动完成字符串(若是存在)。Down Arrow
:将焦点移至并选择下一个选项。若是焦点位于最后一个选项上,则将焦点返回到文本框或不执行任何操做。Up Arrow
:将焦点移至并选择上一个选项。若是焦点在第一个选项上,则将焦点返回到文本框或不执行任何操做。Home
(可选):将焦点移至并选择第一个选项或将焦点返回到文本框并将光标放在第一个字符上。End
(可选):将焦点移动到最后一个选项或将焦点返回到文本框并将光标放在最后一个字符以后。
注意
- DOM Focus在组合框文本框中维护,辅助技术焦点使用
aria-activedescendant
在列表框中移动,如使用aria-activedescendant
管理复合材料中的焦点所述。
2.选择跟随列表框中的焦点;列表框一次只容许为文本框值选择一个建议值。
网格弹出键盘交互
在网格弹出窗口中,每一个建议值能够由单个单元格或整行表示。请参阅下面的注释,了解网格设计的这一方面如何影响键盘交互设计以及选择移动以响应焦点移动的方式。
Enter
:经过关闭弹出窗口并将所选值放在文本框中,并将输入光标放在值的末尾,接受当前选择的建议值。Escape
:关闭弹出窗口并将焦点返回到文本框。(可选)清除文本框的内容。Backspace
(可选):将焦点返回到文本框并删除光标前的字符。Delete
(可选):将焦点返回到文本框,若是选择了建议,则删除选定的状态,并删除内联自动完成字符串(若是存在)。Right Arrow
:将焦点向右移动一个单元格。(可选)若是焦点位于行中最右侧的单元格上,焦点可能会移动到下一行中的第一个单元格。若是焦点位于网格中的最后一个单元格上,则不执行任何操做或将焦点返回到文本框。Left Arrow
:将焦点向左移动一个单元格。(可选)若是焦点位于行中最左侧的单元格上,焦点可能会移动到上一行中的最后一个单元格。若是焦点位于网格中的第一个单元格上,则不执行任何操做或将焦点返回到文本框。Down Arrow
:向下移动一个单元格。若是焦点位于网格的最后一行,则不执行任何操做或将焦点返回到文本框。Up Arrow
:向上移动一个单元格。若是焦点位于网格的第一行,则不执行任何操做或将焦点返回到文本框。Page Down
(可选):将焦点向下移动做者肯定的行数,一般是滚动,以使当前可见行集中的底行成为第一个可见行之一。若是焦点位于网格的最后一行,则焦点不会移动。Page Up
(可选):将焦点向上移动做者肯定的行数,一般是滚动,以便当前可见行集中的顶行成为最后一个可见行之一。若是焦点位于网格的第一行,则焦点不会移动。Home
(可选):要么:
End
(可选):要么:
Control + Home
(可选):将焦点移动到第一行。Control + End
(可选):将焦点移动到最后一行。
注意
- DOM Focus在组合框文本框中维护,辅助技术焦点使用aria-activedescendant在网格内移动,如使用aria-activedescendant管理复合材料中的焦点所述。
- 网格一次只容许为文本框值选择一个建议值。
- 在网格弹出窗口中,每一个建议值能够由单个单元格或整行表示。
这方面的设计影响焦点和选择运动:
A.若是每一个单元格包含不一样的建议值:
- 选择遵循焦点,以便选择包含焦点的细胞。
- 水平箭头键导航一般从一行包装到另外一行。
- 垂直箭头键导航一般从一列包装到另外一列。
B.若是一行中的全部单元格都包含有关相同建议值的信息:- 选择包含焦点的行,或者当同一行中的任何单元格包含焦点时,选择包含建议值的单元格。
- 水平键导航能够从一行换行到另外一行。
- 垂直箭头键导航不会从一列换行到另外一列。
树弹出键盘交互
在树弹出窗口的一些实现中,一些或全部父节点能够用做建议类别标签,所以可能不是可选择的值。
请参阅下面的注释,了解设计的这一方面如何影响选择移动以响应焦点移动的方式。
当焦点位于垂直方向的树弹出窗口时:
Enter
:经过关闭弹出窗口并将所选值放在文本框中,并将输入光标放在值的末尾,接受当前选择的建议值。Escape
:关闭弹出窗口并将焦点返回到文本框。(可选)清除文本框的内容。Right Arrow
:
Left Arrow
:
Down Arrow
:将焦点移动到可聚焦的下一个节点,而无需打开或关闭节点,若是可选,则选择它。Up Arrow
:将焦点移动到可关注的上一个节点,而无需打开或关闭节点,若是可选,则选择它。Home
:将焦点移动到树中的第一个节点,而不打开或关闭节点,若是可选,则选择它。End
:将焦点移动到树中可聚焦的最后一个节点,而不打开节点,若是可选,则选择它。注意
1.DOM Focus在组合框文本框中维护,辅助技术焦点使用aria-activedescendant
在树中移动,如使用aria-activedescendant管理组合焦点所述。
2.树只容许一次为文本框值选择一个建议值。
3.在树弹出窗口中,部分或所有父节点可能不是可选值;它们能够做为建议值的类别标签。若是焦点移动到不是可选值的节点,则:
- 先前选择的节点(若是有)保持选中状态,直到焦点移动到可选择的节点。
- 没有选定的值。
- 在任何一种状况下,焦点在视觉上都与选择不一样,所以用户能够很容易地看到是否选择了值。
4.若是树中的节点水平排列:
A. 向下箭头执行右箭头如上所述,反之亦然。
B. 向上箭头执行为左箭头如上所述,反之亦然。
对话框弹出键盘交互
焦点在对话框弹出窗口中时:
2.取消退出对话框,例如,按Escape或激活对话框中的取消按钮。取消将返回焦点返回到文本框而不更改文本框值或将焦点返回到文本框并清除文本框。该对话框实现了模态对话框模式中定义的键盘交互。
注意
与其余组合框弹出窗口不一样,对话框不支持aria-activedescendant,所以DOM焦点从文本框移动到对话框中。
WAI-ARIA角色,状态和属性
首先列出ARIA 1.1和ARIA 1.0模式不一样的角色,状态和属性指南。随后的指导适用于这两种模式。
aria-haspopup
设置为与弹出窗口类型对应的值。也就是说,aria-haspopup
设置为网格,树或对话框。aria-controls
设置为引用组合框弹出元素的值。aria-owns
设置为引用具备角色列表框的元素的值。aria-haspopup
的值。请注意,具备角色组合框的元素具备listbox的隐式aria-haspopup
值。aria-multiline
值为false
。请注意,aria-multiline
的默认值为false
。aria-expanded
设置为false
。aria-expanded
设置为true
。请注意,具备角色组合框的元素具备aria-expanded
为false
的默认值。aria-activedescendant
设置为引用弹出窗口中的焦点元素的值。aria-selected
设置为true
。aria-labelled
设置为引用标记元素的值。不然,组合框元素具备由aria-label
提供的标签。aria-autocomplete
设置为与其自动完成行为相对应的值:none
:显示弹出窗口时,不管文本框中键入的字符如何,它包含的建议值都是相同的。list
:触发弹出窗口时,它会显示完成或逻辑上对应于文本框中键入的字符的建议值。both
:当触发弹出窗口时,它会显示完成或逻辑上对应于文本框中键入的字符的建议值。此外,所选建议的未被用户键入的部分(称为完成字符串)在文本框中的输入光标后显示为内联。内联完成字符串在视觉上突出显示并具备选定状态。
注意
- 当引用用于弹出窗口的如下模式列表的角色,状态和属性文档时,请记住组合框是单选小部件,其中选择始终在弹出窗口中关注焦点。
- 弹出元素的角色,状态和属性在各自的设计模式中定义:
- listbox 角色,状态和属性
- grid 角色,状态和属性
- tree 角色,状态和属性
- dialog 角色,状态和属性
对话框 是叠加在主窗口或另外一个对话框上的窗口。Window下的模态对话框是惰性的。也就是说,用户不能与对话框以外的内容进行交互。当前活跃窗口以外的非活跃内容,通常是模糊不清或灰暗的,这样就让这些内容很难被辨别,而且在某些实现中,若是试图与非活跃内容进行交互将致使对话框被关闭。
与非模态对话框类型相似,模态对话框限制了TAB顺序。也就是说,Tab
和 Shift + Tab
不会把焦点移出对话框。可是,与非模态对话框不一样的是,模态对话框没有提供在不关闭当前对话框的状况下,将键盘焦点移出对话框窗口的方法。
alertdialog 角色是特殊状况的对话框角色,被专门设计用来将用户的注意力转移至简短、重要的信息上。其用法被描述在 警告对话框设置模块。
示例
键盘交互
在如下的描述中,术语 tabbable element 是指 tabindex 值大于等于0的元素。注意:强烈不建议使用大于0的值。
Tab
:
Shift + Tab
:
Escape
: 关闭对话框。注意
- 当对话框被打开时,根据内容的性质和大小放置焦点。
- 在任何状况下,焦点都应该移至对话框中的一个元素上。
- 除非建议某个操做的状况,焦点应该被初始设置在第一个可聚焦的元素上。
- 若是对话框里面的内容很是多,聚焦第一个交互元素会致使起始内容滚出视窗,建议给对话框顶部的静态元素添加
tabindex="-1"
- 若是对话框内容是一个不容易逆转的流程的最后一步,例如删除数据或者完成资金交易,建议将焦点设置在最小的破坏性操做上,特别是撤销比较困难或不可撤销的操做。一般这种状况下使用 警告对话框。
- 若是对话框内容仅包含提供额外信息或是继续处理的交互,则建议将焦点设置为最有可能使用的元素上,例如 "OK" 或 "Continue" 按钮。
- 当一个对话框关闭时,焦点返回到唤起该对话框的元素上,除了:
- 唤起元素不复存在,此时,焦点被设置在逻辑工做流程中的另外一个元素上。
包含如下场景的工做流程设计,能够聚焦到一个更加符合逻辑的、不一样的元素。
- 用户不太可能须要当即从新唤起对话框。
- 对话框中完成的任务与工做流程中的后续步骤直接相关。
例如,网格包含一个具备用于添加行的按钮的相关工具条。
Add Row
按钮打开一个提示输入行数的对话框。对话框关闭之后,焦点应该放在新增行的第一个单元格中。
- 强烈建议在全部对话框中的Tab序列中,包含一个具备
button
角色的可见元素来关闭对话框,例如一个关闭图标,或者取消按钮。
WAI-ARIA 角色,状态和属性
dialog
角色元素的后代。true
。dialog
角色的元素上,指明对话框中的哪些元素包含描述对话框的主要目的或信息的内容。指定描述元素,当对话框打开时,可以让屏幕阅读器在朗读对话框标题和初始聚焦元素的同时,朗读该描述。注意
- 经过将 aria-modal 设置为
true
,将对话框标记为模态对话框,能够防止某些辅助技术用户感知到对话框外的内容,若是一个对话框被标记为模态对话框,但对其余用户来讲又不表现为模态对话框,这些辅助技术的用户将会获得很差的体验。因此, 如下两点同时出现时,标记为模态对话框:
- 应用程序代码防止全部用户以任何方式和对话框外的元素进行交互。
- 视觉样式模糊了对话框外的内容。
- ARIA1.1中引入的
aria-modal
属性替代了 aria-hidden,为了告知辅助技术对话框的内容是不可交互的。然而,但传统对话框的实现中,aria-hidden
被用来让对话框外的内容变得让辅助技术用户不可访问,更重要的是:
- 在每一个包含无效内容的元素上都将
aria-hidden
设置为true
。- 对话框元素不是任何
aria-hidden
为true
的元素的后代。
Feed是页面的一部分,可在用户滚动时自动加载新的内容部分。Feed中内容的各个部分以文章元素显示。所以,能够将Feed视为动态的文章列表,这些文章一般会无限滚动。
当用户滚动(例如网格)时,最能区分馈送与支持加载数据的其余ARIA模式的特征是馈送是结构而不是小部件。所以,具备阅读模式的辅助技术(例如屏幕阅读器)在与Feed内容交互时默认为阅读模式。可是,与大多数其余WAI-ARIA结构不一样,Feed会在网页和辅助技术之间创建互操做性合同。合同管理滚动交互,以便辅助技术用户能够阅读文章,按文章向前和向后跳转,并在阅读模式下可靠地触发新文章加载。
例如,购物网站上的产品页面可能具备一次显示五个产品的相关产品部分。当用户滚动时,请求更多产品并将其加载到DOM中。虽然静态设计可能包含用于加载另外五个产品的下一个按钮,可是在用户滚动时自动加载更多数据的动态实现简化了用户体验并减小了与查看前五个产品建议相关的惯性。可是,遗憾的是,当网页基于滚动事件动态加载内容时,它可能会给辅助技术的用户带来可用性和互操做性困难。
经过在网页和辅助技术之间创建如下互操做性协议,馈送模式实现可靠的辅助技术阅读模式交互:
所以,实现馈送模式容许屏幕阅读器在保持其读取模式的同时可靠地读取和触发馈送内容的加载。
feed模式的另外一个特征是它有助于辅助技术用户的脱脂阅读。
网页做者能够为每篇文章提供可访问的名称和描述。经过识别提供标题和主要内容的文章内部的元素,辅助技术能够提供使用户可以从一篇文章跳到另外一篇文章并有效地辨别哪些文章值得更多关注的功能。
示例
Feed模式的示例实现
键盘交互
Feed模式不基于桌面GUI小部件,所以feed角色与任何完善的键盘约定无关。建议支持如下或相似的界面。
当焦点位于Feed中时:
Page Down
:将焦点移至下一篇文章。Page Up
:将焦点移至上一篇文章。Control + End
:在焦点后将焦点移动到第一个可聚焦元素。Control + Home
:在焦点前将焦点移动到第一个可聚焦元素。
注意
- 因为缺少惯例,提供易于发现的键盘界面文档尤其重要。
- 在某些状况下,Feed可能包含嵌套Feed。例如,社交媒体Feed中的文章可能包含该文章的评论摘要。要导航嵌套的Feed,用户首先将焦点移动到嵌套的Feed中。支持嵌套Feed导航的选项包括:
- 用户使用Tab将焦点移动到包含文章内容的嵌套订阅源中。若是文章包含大量连接,按钮或其余小部件,这可能会很慢。
- 提供一个键,用于将焦点从包含文章中的元素移动到嵌套Feed中的第一个项目,例如Alt + Page Down。
- 要继续阅读外部Feed,Control + End会将焦点移至外部Feed中的下一篇文章。
- 在极少数状况下,Feed文章包含使用上述建议键的小部件,Feed导航键将操做包含的小部件,而且用户须要将焦点移动到不使用Feed导航键以便导航的元素Feed。
WAI-ARIA角色,状态和属性
aria-labelledby
。不然,feed元素具备使用aria-label指定的标签。aria-labelledby
,指的是文章中能够做为区别标签的元素。aria-describedby
。aria-posinset
设置为一个值,该值表示其在Feed中的位置。aria-setsize
设置为一个值,该值表示已加载的文章总数或Feed中的总数,具体取决于哪一个值对用户更有帮助。若是Feed中的总数未肯定,则能够用aria-setsize
值-1表示。aria-busy
设置为true。请注意,当操做完成或某些辅助技术用户可能没法看到更改时,将aria-busy
设置为false很是重要。网格 组件是一个容器,可以让用户使用方向导航键,例如 arrow keys
、 Home
和 End
,来浏览其包含的信息和与其包含的元素进行交互。做为提供灵活键盘导航的通用容器小部件,它能够知足各类各样的需求。它能够用于简单的组合复选框或导航连接的集合,也可用于复杂的目的,例如完整功能的电子应用表格。尽管 WAI-ARIA 属性和辅助技术使用"row" 和 "column" 的术语,描述和呈现 grid
角色元素的逻辑结构,可是在元素上使用 grid
角色,并不须要将其视觉呈现实现为表格。
当呈现的内容是表格时,从 grid
和 table 中选择实现模式时,考虑如下因素。
grid
是一个复合小部件,因此它:
grid
模式的使用大体可分为两类:展现表格信息(数据表格)和集合其余部件(布局栅格)。尽管数据网格和布局栅格使用相同的ARIA角色、状态和属性,它们内容和目的中的不一样是考虑键盘交互设计的重要因素。为了强调这些因素,如下两节分别介绍了数据网格和数据栅格的键盘交互模式。
示例
呈现表格信息的数据网格
grid
可用于显示具备列标题,行标题或二者均有的表格信息。若是表格信息是可编辑的或可交互的, grid
模式特别有用。例如,当数据元素是更多信息的连接时,不是将它们呈如今静态表格中并在页面tab序列中包含全部连接,实现 grid
模式提供给用户更加直观和有效的键盘导航方式,同时缩短了页面的tab序列的长度。 grid
还能够提供诸如单元格内容编辑,选择,剪切,复制和粘贴等功能。
在一个呈现表格数据的 grid
中,每个单元格都包含一个可聚焦的元素或其单元格自己可聚焦,不管单元格内容是否可编辑或可交互。有一个例外:若是行列的表头单元格没有提供功能,例如排序或过滤,它们不须要可聚焦。一个缘由是当用户与 grid
交互时,屏幕阅读器须要处于应用阅读模式,而不是文档阅读模式,这很是重要。在应用阅读模式时,屏幕阅读器用户只能发现可聚焦的元素和标记可聚焦元素的内容。所以,屏幕阅读器用户可能会在不知情的状况下忽略网格中包含的元素,当它们不可聚焦或不用于标记列或行。
数据网格键盘交互
如下键经过在网格的单元格之间移动焦点来提供网格导航。默认状况下,这些键盘命令在网格元素接收到焦点后默承认用。例如,用户将焦点移动具备 Tab 的网格后。
Right Arrow
: 将焦点向右移动一个单元格。若是焦点位于行中最右侧的单元格,则焦点不会移动。Left Arrow
: 将焦点向左移动一个单元格。若是焦点位于行中最左侧的单元格,则焦点不会移动。Down Arrow
: 将焦点往下移动一个单元格。若是焦点位于列中的底部单元格上,则焦点不会移动。Up Arrow
: 将焦点往下移动一个单元格。若是焦点位于列中的顶部单元格上,则焦点不会移动。Page Down
: 以开发者设定的行数移动焦点,通常滚动时,当前可见行集合中的最后一行会变为第一次滚动后可见行中的一行。Page Up
: 移动焦点到开发者设定的行数,通常滚动时,当前可见行集合中的第一行会变为滚动后可见行中的一行。Home
: 将焦点移至包含焦点所在行的第一个单元格。End
: 将焦点移至包含焦点所在行的最后一个单元格。Control + Home
: 将焦点移至第一行中的第一个单元格。Control + End
: 将焦点移至最后一行的最后一个单元格。注意
- 当使用以上网格导航键移动焦点时,根据单元格内容,在单元格内元素或网格单元格上设置焦点。 请参阅 Whether to Focus on a Cell or an Element Inside It。
- 当使用导航键在单元格间移动焦点,例如光标键,它们不能用于某些操做,例如操做组合框或在单元格内移动编辑光标。若是须要此功能,请参阅 Editing and Navigating Inside a Cell。
- 若是导航功能能够动态地向DOM添加更多的行或列,则将焦点移至网格的开头或结尾的键盘事件(例如
control + End
),可将焦点移至DOM中的最后一行,而不是先前可用数据的最后一行。
若是网格支持单元格、行、列的选择,通常使用如下的键实现这些功能。
Control + Space
: 选择包含焦点的列。Shift + Space
: 选择包含焦点的行。若是网格包含带有用于选择行的复选框的列,则该键能够用做在焦点不在复选框时勾选框的快捷方式。Control + A
: 选择全部单元格。Shift + Right Arrow
: 向右扩展选择一个单元格。Shift + Left Arrow
: 向左扩展选择一个单元格。Shift + Down Arrow
: 向下扩展选择一个单元格。Shift + Up Arrow
: 向上扩展选择一个单元格。注意 有关剪切,复制和粘贴键的分配,请参阅 Key Assignment Conventions for Common Functions。
组合部件的布局栅格
grid
模式可被用于组合一组可交互元素,例如连接、按钮、和复选框。因为整个网格只有一个元素包含在tab序列中,因此使用网格进行分组能够显著减小页面上的tab步骤。若是滚动元素列表会从一个大数据集中动态地加载更多的元素,例如在购物类网站中的推荐产品的连续列表中,该模式尤为有用。若是像这样的列表元素都在tab序列中,键盘用户会被困在列表中。若是组中的任何元素在鼠标悬停时都会出现关联元素, grid
模式用来为用户界面的上下文元素提供键盘访问。
与用于呈现数据的网格不一样,用于布局的 grid
不必定具备用于标记行或列的标题单元格,而且可能只包含单个行或单个列。即便有多个行和列,它也可能呈现一个独立、逻辑上相同的元素集合。例如,消息的收件人列表多是个网格,其每一个单元格包含一个表明收件人的连接。网格最初可能只有一行,可是随着收件人的添加,会变为多行。在这样的状况下,网格导航键也须要换行,以便用户能够使用 Right Arrow 和 Down Arrow 来从列表开头阅读到末尾。虽然在布局栅格中这种类型的焦点移动换行很是有用,可是若是在数据网格中使用就会让用户迷失方向,尤为是辅助技术的用户。
由于光标键被用来在 grid
中移动焦点,若是其包含的元素不须要光标键来操做, grid
将会更容器构建和使用。若是一个单元格包含相似listbox的元素,则须要额外的键盘命令来聚焦和激活 listbox,和恢复网格导航功能的命令。支持这个需求的方法在 Editing and Navigating Inside a Cell部分进行描述。
布局栅格的键盘交互
如下键经过在网格的单元格之间移动焦点来提供网格导航。这些键盘命令在 Tab 中的元素接收焦点后默承认用。
Right Arrow
: 将焦点向右移动一个单元格。可选,若是焦点位于行中最右侧的单元格上,则焦点可能会移至下一行中的第一个单元格。若是焦点位于网格中的最后一个单元格上,则焦点不会移动。Left Arrow
: 将焦点向左移动一个单元格。可选,若是焦点位于行中最左侧的单元格上,则焦点可能会移至上一行中的最后一个单元格。若是焦点位于网格中的第一个单元格上,则焦点不会移动。Down Arrow
: 将焦点向下移动一个单元格。可选,若是焦点位于列中的底部单元格上,则焦点可能会移至下一列的顶部单元格。若是焦点位于网格中的最后一个单元格上,则焦点不会移动。Up Arrow
: 将焦点向上移动一个单元格。可选,若是焦点位于当前列的顶部单元格上,则焦点可能会移至前一列的最后一个单元格。若是焦点位于网格的第一个单元格上,则焦点不会移动。Page Down
(可选): 以开发者设定的行数向上移动焦点,通常状况下,当前可见行中的第一行会成为滚动后可见行中的一行。Page Up
(可选): 将对象移至做者肯定的行数上,一般是滚动的,所以当前可见的行行中的顶行将成为最后一个可见行之一。若是焦点位于网格的第一行,则焦点不会移动。Home
: 将焦点移至包含焦点的行中的第一个单元格。可选,若是网格具备单列或每行少于三个单元格,则焦点能够替代地移至网格中的第一单元格。End
: 将焦点移至包含焦点的行中的最后一个单元格。可选,若是网格具备单个列或每行少于三个单元格,则焦点能够替代地移至网格中的最后一个单元格。Control + Home
(可选): 将焦点移至第一行中的第一个单元格。Control + End
(可选): 将焦点移至最后一行的最后一个单元格。注意
- 当使用以上网格键移动焦点时,根据单元格内容,决定焦点是否设置在单元格内的元素上或网格单元格上。 请参阅 Whether to Focus on a Cell or an Element Inside It.
- 当使用导航键在单元格间移动焦点时,它们不可用于相似操做组合框或在单元格内移动输入光标等的事情。若是须要此功能,请参阅Editing and Navigating Inside a Cell。
- 若是导航功能能够动态地向DOM中添加更多的行或列,则移动焦点到网格的开头或结尾的键盘事件(例如
control + End
),可将焦点移至DOM中的最后一行,而不是后端数据中可用的最后一行。
为栅格布局提供须要单元格选择功能,是不常见的。虽然如此,但当确实须要时,这些功能通常使用如下的键:
Control + Space
: 选择包含焦点的列。Shift + Space
: 选择包含焦点的行。若是网格包含用于选择行的复选框的列,当焦点不在复选框上时,可做为选中复选框的快捷键。Control + A
: 选择全部单元格。Shift + Right Arrow
: 向右扩展选择一个单元格。Shift + Left Arrow
: 向左扩展选择一个单元格。Shift + Down Arrow
: 向下扩展选择一个单元格。Shift + Up Arrow
: 向上扩展选择一个单元格。注意 有关剪切,复制和粘贴键的分配,请参阅 Key Assignment Conventions for Common Functions。
键盘交互 — 设置焦点和导航单元格内容
本节介绍了数据和布局网格模式共有的键盘交互设计的两个重要方面:
一、选择单元格或单元格内元素接收焦点,来响应网格导航键盘按键事件。 二、启用网格导航键,用来与单元格内元素进行交互。
是否聚焦单元格或其包含的元素
对于辅助技术用户,导航网格时的体验质量很大程度上取决于单元格包含的内容以及设置键盘焦点的位置。例如若是一个单元格包含一个按钮,网格导航键在单元格上放置焦点,而不是按钮上,屏幕阅读器会朗读出按钮的标签,但不会告知用户存在一个按钮。
有两种最佳的单元格设计和聚焦行为组合:
可是组件、文本和图像的任意组合均可能被包含在一个单元格中,不遵循以上两种设置和焦点移动模式的网格,会增长开发者或用户或二者的复杂性。下面样例部分中包含的参考实现,给出了让其余单元格设计尽量可访问的一些策略,可是使用以上两种模式,才能得到最大程度的无障碍体验。
在单元格内编辑和导航
当使用导航键在单元格间移动焦点,它们不能用来执行像操做组合框或在单元格内移动光标的操做。用户可能须要用于网格导航的键来操做单元格内的元素,若是单元格包含:
如下为禁用和恢复网格导航功能的惯用键盘操做。
Enter
: 禁用网格导航以及:
F2
:
当网格导航被禁用时,导航行为的常规更改包括:
Escape
: 恢复网格导航。若是正在编辑内容,它也可能会撤消修改。Right Arrow
或者 Down Arrow
: 若是单元格包含多个小组件,将焦点移至单元格的内下一个小组件,若是焦点在最后一个组件上,可选`地,将焦点返回给第一个小组件,或者,传递按键事件到当前聚焦的组件。Left Arrow
或者 Up Arrow
: 若是单元格包含多个小组件,将焦点移至单元格的内前一个小组件,若是焦点在最后一个组件上,可选,将焦点返回给第一个小组件,或者,传递按键事件到当前聚焦的组件。Tab
: 将焦点移至网格中的下一个组件。可选,焦点可能会在一个单元格内循环,或在网格内循环。Shift + Tab
: 将焦点移至网格中的上一个组件。可选,焦点可能会在一个单元格内循环,或在网格内循环。WAI-ARIA 角色,状态和属性
row
元素的DOM后代,或被row元素拥有,而且具备如下角色之一:
true
。aria-readonly
为 true
。若是全部单元格的编辑功能都被禁用,在网格元素上设置 aria-readonly 为 true
。不提供编辑功能的网格在任何元素上都不包含 aria-readonly
属性。grid
角色未应用于HTML table
元素,则应用 aria-rowspan 或 aria-colspan,如 grid and table properties 所述。注意
- 若是具备
grid
角色的元素是HTMLtable
元素,那么没必要为行和单元格使用ARIA角色,由于HTML元素暗含了ARIA语义。例如,HTMLTR
具备隐含的ARIA角色row
。一个从HTMLtable
构建的 网格,包含跨越多行或多列的单元格,必须使用HTMLrowspan
和colspan
属性,不能使用aria-rowspan
或aria-colspan
。- 若是经过aria-owns属性将行或列包含在网格中,它们将在网格元素的DOM后代以后呈现给辅助技术,除非DOM后代也被包含在给 aria-owns 属性中。请参阅使用
aria-owns
进行详细说明。
与HTML表元素同样,WAI-ARIA表格是一个静态表格结构,包含一行或多行,每行包含一个或多个单元格;它不是一个交互式小部件。所以,其单元不可聚焦或可选择。网格图案用于制做具备表格结构的交互式窗口小部件。
可是,表一般用于呈现信息和交互式小部件的组合。因为表不是窗口小部件,所以表中包含的每一个窗口小部件都是页面选项卡序列中的单独停靠点。若是窗口小部件的数量很大,则使用网格替换表能够显着减小页面选项卡序列的长度,由于网格是能够包含其余窗口小部件的复合窗口小部件。
注意
与具备本机宿主语言等效的其余WAI-ARIA角色同样,强烈建议做者尽量使用本机HTML表格元素。这对角色表尤为重要,由于它是WAI-ARIA 1.1的新功能。所以,建议使用可供目标受众使用的每种浏览器和辅助技术组合完全测试实施。
示例
键盘交互
不适用。
WAI-ARIA角色,状态和属性
注意
若是行或单元格经过aria-owns包含在表中,则它们将在表元素的DOM后代以后呈现给辅助技术,除非DOM后代也包含在aria-owns属性中。
选项卡是一个内容分层模块的集合,被称为选项卡面板,一次只能显示内容的一个面板。每一个选项卡面板都有相关联选项卡元素,当被激活,显示其相关联面板。选项卡元素列表被排列在当前显示面板的边缘,大多数状况在顶部边缘。
用于描述选项卡的术语包含:
选项卡或选项卡界面
选项卡元素组合和它们相关联的内容面板。
选项卡列表 被包含在 tablist 元素中的选项卡元素组合。
选项卡 选项卡列表中的一个元素,做为其中一个内容面板的标签,能够激活以显示对应的内容面板。
内容面板 包含与选项卡元素相关联内容的元素。
当初始化一个选项卡界面,一个选项卡面板默认显示,其相关联选项卡元素使用样式来标识其当前活跃。当用户激活一个别的选项卡元素,先前显示的内容面板被隐藏,与被激活选项卡元素相关联的内容面板变为可见,且选项卡元素被认为当前“活跃”。
示例
键盘交互
对于选项卡列表:
Tab
: 当焦点进入选项卡列表,将焦点放置在当前活跃 选项卡 元素上。当选项卡列表包含焦点,移动焦点到当前页面 tab
序列中的选项卡列表外的下一个元素,通常状况是内容面板的第一个可聚焦元素,或内容面板自己。Left Arrow
: 移动焦点到上一个选项卡元素;若是焦点在第一个选项卡元素上,移动焦点到最后一个选项卡元素。Right Arrow
: 移动焦点到下一个选项卡元素。若是焦点在最后一个选项卡元素上,移动焦点到第一个选项卡元素。Space or Enter
: 若是获取焦点的选项卡不会自动激活,则激活该选项卡元素。Home
(可选): 移动焦点到第一个选项卡元素上。End
(可选): 移动焦点到最后一个选项卡元素上。Shift + F10
: 若是选项卡有关联的弹出菜单,则打开菜单。Delete
(可选): 若是容许删除操做,删除(关闭)当前选项卡元素和其相关联选项卡面板。若是还有任何选项卡元素,将焦点设置在已关闭选项卡元素的下一个元素上,而且激活新聚焦的选项卡元素。注意
- 建议当选项卡元素接收到焦点时自动激活,只要它们相关的选项卡面板显示时没有明显的延迟。这种作法须要提早加载选项卡内容面板的内容。不然,自动激活标签会延缓焦点移动,这也会下降用户有效浏览选项卡列表的效率。更多相关指导,能够阅读 Deciding When to Make Selection Automatically Follow Focus
- 若是选项卡列表中的选项卡元素垂直排列:
Down Arrow
与Right Arrow
执行同样的操做。Up Arrow
与Left Arrow
执行同样的操做。- 若是选项卡列表是水平的,它不会监听
Down Arrow
或Up Arrow
光标键,即便焦点在选项卡列表内,使用这些键仍会提供浏览器的常规滚动功能。- 若是您有三个以上的选项卡,请务必更新aria-posinset和aria-setsize属性的值。
WAI-ARIA 角色,状态和属性
tablistl
角色的元素里。tab
角色的元素,具备 aria-controls 属性来索引其相关联 tabpanel
元素。tab
元素具备 aria-selected 状态且设置为 true
,全部其余 tab
元素为 false
。tabpanel
的元素有 aria-labelledby 属性,来索引其相关联 tab
元素。tab
元素有弹出菜单 ,则它的属性 aria-haspopup 设置为 true
。tablist
元素是垂直排布,那么它应该设置 aria-orientation 属性值为 vertical
。tablist
元素的 aria-orientation
默认值为horizontall
。一个树视图呈现为一个分层列表。层次结构中的任何项目均可能有子项,而且有子项的元素,能够展开或折叠来显示或隐藏子项。例如,在使用树视图显示文件夹和文件的文件系统导航器中,表明文件夹的项目可以被展开文件夹中的内容,这些内容多是文件、文件夹,或二者都有。
理解的树视图的一些术语包括:
节点
在树结构中的项目。
根结点
在树结构根部的节点;它能够具备一个或多个子节点,但不具备父节点。
子节点
有一个父节点的节点;任意节点若是不是根节点,那它就是一个子节点。
终端节点
不具备任何子节点的节点;一个终端节点要么是根节点要么是子节点。
父节点
有一个或多个子节点的节点。它能够是打开的(扩展)或关闭的(折叠)。
开节点
被展开以使其子节点可见的父节点。
闭节点
被折叠以使其子节点不可见的父节点。
当使用键盘来导航一个树结构,一个可见的键盘指示器告诉用户哪一个节点被聚焦。若是树结构容许用户一个动做只选择一个项目,那么它被称为单选择树(single-select tree),并且被聚焦的项目还有一个被选中的状态。可是,在多选择树(multi-select trees)中,容许用户一次性选择多个项目,其选择状态与焦点无关。例如,在一个典型文件系统导航器中,用户能够一次性地移动焦点来选择任意数量的文件,例如复制或移动。为已选定和具备焦点的项目提供视觉上的设计区分,这很是重要。有关详细信息,请参阅 this description of differences between focus and selection。
示例
aria-level
, aria-posinset
和aria-setsize
属性。aria-level
, aria-posinset
和 aria-setsize
的值。aria-level
, aria-posinset
和 aria-setsize
属性。aria-level
, aria-posinset
和 aria-setsize
的值。键盘交互
对于垂直方向的树结构:
Right arrow
:
Left arrow
:
Down Arrow
: 不打开或关闭节点,将焦点移至下一个可聚焦的节点。Up Arrow
: 不打开或关闭节点,将焦点移至上一个可聚焦的节点。Home
: 不打开或关闭节点,将焦点移至树结构中的第一个可聚焦的节点。End
: 不打开或关闭节点,将焦点移至树结构的最后一个可聚焦的节点。Enter
: 激活一个节点,即执行其默认操做。对于父节点,一个可能的默认动做是打开或关闭节点。在一个选项不跟随焦点(见下面的注释)的单选树,默认的操做一般是选择焦点节点。 +建议全部的树结构支持提早键入,特别是对于包含超过7个根节点的树结构:
Space
: 切换聚焦节点的选择状态。Shift + Down Arrow
(可选): 将焦点移至下一个节点,而且切换下一个节点的选择状态。Shift + Up Arrow
(可选): 将焦点移至上一个节点,而且切换上一个节点的选择状态。Shift + Space
(可选): 选择从最后选择的节点到当前节点的相邻节点。Control + Shift + Home
(可选): 选择具备焦点的节点以及它到第一个节点的全部节点。Control + Shift + End
(可选): 选择具备焦点的节点以及它到最后一个节点的全部节点。Control + A
(可选): 选择在树结构中的全部节点。根据须要,若是选择了全部的节点,它也能够取消选择全部节点。Shift
或 Control
辅助键,会取消选中节点,聚焦的节点除外:
Shift + Down Arrow
: 将焦点移至下一个节点,而且切换下一个节点的选择状态。Shift + Up Arrow
: 将焦点移至上一个节点,而且切换上一个节点的选择状态。Control + Down Arrow
: 不改变选择状态,将焦点移至下一个节点。Control + Up Arrow
: 不改变选择状态,将焦点移至前一个节点。Control + Space
: 切换聚焦节点的选择状态。Shift + Space
(可选): 选择从最近选择的节点到当前节点的相邻节点。Control + Shift + Home
(可选): 选择从焦点节点到第一个节点的全部节点。Control + Shift + End
(可选): 选择焦点节点到最后一个节点的全部节点。Control + A
(可选): 选择在树结构中的全部节点。根据须要,若是全部的节点都被选择了,它也能够取消选择全部节点。注意
tree
角色支持 aria-activedescendant 属性,它提供了另外一种使用键盘导航在 treeitem
元素间移动DOM焦点的方式。有关详细信息,请参阅 Managing Focus in Composites Using aria-activedescendant。Down Arrow
的表现如上面描述的 Right Arrow
同样,反之亦然。Up Arrow
的表现如上面描述的 Left Arrow
同样,反之亦然。WAI-ARIA 角色,状态和属性
tree
的元素或被设置了 aria-owns 的属性的 tree
元素引用。treeitem
的元素 aria-expanded 设置为 false
,当节点处于关闭状态,并设置为 true
时,该节点是在打开状态。终端节点没有 aria-expanded
属性,由于,若是他们有,他们会被辅助技术错误地描述为父节点。tree
的元素拥有设置为 true 值的 aria-multiselectable 属性。不然,aria-multiselectable
要么是设置为 false
或使用默认值 false
。aria-selected
被设置为 true
而且该属性不存在于树中的任何其它节点。true
。false
。tree
的元素拥有被 aria-labelledby 引用的可见标签或拥有指定值的 aria-label 属性 。tree
元素是水平方向的,它的 aria-orientation 设置为 horizontal
。一个树结构的 aria-orientation
默认值是 vertical
。注意 若是 aria-owns 设置在树容器上,以包含不是该容器DOM子元素的元素,这些元素会按它们被引用的顺序出如今读取序列中,而且在全部属于该容器的DOM子元素以后。用于管理焦点的脚本须要确保视觉焦点与这个辅助技术读取顺序相匹配。
treegrid呈现分层数据网格,该网格由可编辑或交互的表格信息组成。层次结构中的任何行均可以具备子行,而且能够展开或折叠具备子项的行以显示或隐藏子项。例如,在用于显示电子邮件讨论列表的消息和消息响应的treegrid中,具备响应的消息将在行中,能够展开以显示响应消息。
在树形网格中,行和单元格都是可聚焦的。不管单个单元格内容是可编辑的仍是交互式的,每一个行和单元格都包含一个可聚焦元素或者自己是可聚焦的。有一个例外:若是列标题单元格不提供排序或过滤等功能,则它们不须要是可聚焦的。对于全部单元可以接收或包含键盘焦点而言重要的一个缘由是,当用户与网格交互时,屏幕阅读器一般将处于其应用程序读取模式,而不是其文档读取模式。在应用程序模式下,屏幕阅读器用户只能听到可聚焦元素和标记可聚焦元素的内容。所以,屏幕阅读器用户可能会在不知不觉中忽略树格中包含的元素,这些元素要么不可聚焦,要么不用于标记列或行。
当使用键盘导航树形网格时,可视键盘指示器通知用户哪一个行或单元格被聚焦。若是treegrid容许用户仅为一个动做选择一个项目,则它被称为单选树格,而具备焦点的项目也具备选定状态。可是,在多选树格中,使用户可以为操做选择多个行或单元格,所选状态与焦点无关。例如,在分层电子邮件讨论网格中,用户能够移动焦点觉得操做选择任意数量的行,例如删除或移动。视觉设计必须区分所选项目和具备焦点的项目。有关更多详细信息,请参阅焦点和选择之间差别的此描述。
示例
电子邮件收件箱treegrid示例:用于导航电子邮件收件箱的树形网格,演示三种键盘导航模型 - 第一行,单元格第一,单元格。
键盘交互
如下键经过在网格的行和单元格之间移动焦点来提供treegrid导航。当网格中的元素已经得到焦点时,例如在用户使用Tab将焦点移动到网格以后,treegrid的实现使这些键命令可用。将焦点移动到网格中可能致使第一个单元格或第一个行被聚焦。焦点是转到单元格仍是行取决于做者首选项以及是否支持行焦点,由于某些treegrids可能没法为行提供焦点。
Enter
:若是启用了仅单元格焦点而且焦点位于具备aria-expanded属性的第一个单元格上,则打开或关闭子行。不然,执行单元格的默认操做。Tab
:若是包含焦点的行包含可聚焦元素(例如,输入,按钮,连接等),则将焦点移动到行中的下一个输入。若是焦点位于行中的最后一个可聚焦元素,则将焦点从treegrid小部件移动到下一个可聚焦元素。Right Arrow
:Left Arrow
:若是焦点位于展开的行上,则折叠该行。Down Arrow
:Up Arrow
:Page Down
:Page Up
:Home
:End
:Control + Home
:Control + End
:注意
- 当上述treegrid导航键移动焦点时,焦点是设置在单元格内仍是单元格上的元素上取决于单元格内容。查看是否关注单元格或其中的元素。
- 虽然导航键(例如箭头键)正在将焦点从一个单元移动到另外一个单元格,但它们不能用于操做组合框或在单元格内移动编辑插入符。若是须要此功能,请参阅编辑和在单元格内导航。
- 若是导航功能能够动态地向DOM添加更多行或列,则将焦点移动到网格的开头或结尾的键事件(例如control + End)可能会将焦点移动到DOM中的最后一行而不是最后一行在后端数据中。
若是treegrid支持选择单元格,行或列,则如下键一般用于这些函数。
Control + Space
:Shift + Space
:Control + A
:选择全部单元格。Shift + Right Arrow
:Shift +Left Arow
:Shift +Down Arrow
:Shift +Up Arrow
:若是焦点在一个单元格上,则选择一个单元格。
注意
有关剪切,复制和粘贴键分配的经常使用功能,请参见键分配约定。
WAI-ARIA 角色,状态和属性
treegrid
元素的DOM后代或元素拥有的元素或具备角色rowgroup的元素。row
元素的DOM后代或由元素拥有,并具备如下角色之一:
row
能够展开或折叠,以显示或隐藏一组子行是父行。每一个父元素都在元素或包含在元素中的单元格上设置row
了aria扩展状态。将状态设置为当子行不显示,并且设置为显示子行的时候。不控制子行显示的行没有该属性,由于若是它们具备该属性,则它们将被错误地描述为辅助技术做为父行。 row``row``aria-expanded``false``true``aria-expanded
treegrid
将aria-multiselectable设置为true
。不然,它是单选树格,而且aria-multiselectable
设置为false
或默认值为false
隐含值。true
,而且它不存在于treegrid中的任何其余行或单元格上。true
为禁用编辑的单元格。若是对全部单元格禁用编辑功能,则能够在元素上设置aria-readonly
为true
不对每一个单元格aria-readonly
设置为true
on treegrid
。不提供单元格内容编辑功能的Treegrids不包含aria-readonly
任何元素的属性。treegrid
角色未应用于HTML table
元素,则应用aria-rowspan或aria-colspan,如网格和表格属性中所述。窗口分割器是窗口的两个部分或窗格之间的可移动分隔符,其容许用户改变窗格的相对大小。Window Splitter能够是可变的也能够是固定的。固定分离器在两个位置之间切换,而可变分离器能够调整到容许范围内的任何位置。
窗口拆分器的值表示其中一个窗格的大小,在此模式中,窗格称为主窗格。当拆分器具备其最小值时,主窗格具备其最小尺寸,而且辅助窗格具备其最大尺寸。拆分器还具备与主窗格名称匹配的可访问名称。
例如,考虑具备用于目录的主窗格的书籍阅读应用程序和用于显示书籍的一部分的内容的辅助窗格。两个窗格被标记为“目录”的垂直分割器分开。当目录窗格具备其最大大小时,拆分器的值为100
,当内容表彻底折叠时,拆分器的值为0
。
请注意,术语“主窗格”未描述窗格内的内容的重要性或目的。
键盘交互
Left Arrow
:将垂直分割器向左移动。Right Arrow
:将垂直分割器向右移动。Up Arrow
:向上移动水平分割器。Down Arrow
:向下移动水平分割器。Enter
:若是主窗格未折叠,则折叠窗格。若是窗格已折叠,请将拆分器恢复到先前的位置。Home
(可选):将拆分器移动到为主窗格提供容许的最小大小的位置。这可能会彻底折叠主窗格。End
(可选):将拆分器移动到为主窗格提供最大容许大小的位置。这可能会彻底折叠辅助窗格。F6
(可选):在窗格中循环。注意
固定大小的分离器省略了箭头键的实现。
WAI-ARIA角色,状态和属性
0
。100
。包容性设计(inclusive design)和通用设计(universal design)的区别是什么?-知乎
What You’re Getting Wrong About Inclusive Design-Kat Holmes
5 Digital Accessibility Myths Busted - Carie Fisher
Accessibility First: Rethinking the Way We Approach Website Design and Development - Carie Fisher
Designing Accessible Content: Typography, Font Styling, and Structure- Carie Fisher
How to Boost Your Website’s Accessibility + SEO
WAI-ARIA Authoring Practices 1.1
Deque's Accessibility Heuristics
The Accessibility of Styled Form Controls