前言
随着互联网的普及,我们的生活已越来越离不开它。但是对于少部分人来说,一些网站内容可能是无法访问的,这就是所谓的无障碍问题。而如何建立无障碍网站,成为了前端工程师需要重视的一项技能。本文将介绍无障碍网站的前端性能优化技术,包括了网站架构与实现两个方面。
网站架构
HTML5 文档结构
网站的 HTML5 结构应该对所有的屏幕阅读器和设备友好。也就是说,在确定适当的头部和标题后,应该有一个清晰的主要内容区域,并且必须在所有的标签中有相关的 title
、alt
和 aria-label
属性。
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- ---------------------- ------- ------ -------- ------------- ----- ---- ------ --------------------- ------ --------------------- ------ --------------------- ----- ------ --------- ------ ------------------ --------------- ------- ------------------------- ------- -------展开代码
ARIA 标准
ARIA(Accessible Rich Internet Applications)是一种面向不同能力的用户,特别是视觉和听力障碍用户,提供接近于原生应用体验的 Web 应用的各种辅助技术。因此,在 Web 站点的结构上,我们可以考虑引入 ARIA 标准。
其中,role
属性用于标识一个元素的角色,比如菜单、列表、弹窗等;aria-label
属性用于为辅助技术提供元素的描述;aria-describedby
属性用于关联元素的描述文本;aria-hidden
属性用于指示一个元素是否应该被屏幕阅读器忽略等。
具体使用方法可以参考 ARIA 官方文档。
网站实现
基础优化
图片:使用合适的 alt
属性来描述图片的内容和作用。如果图片是可以点击的,需要添加 aria-label
属性或对应的文本,并且将其 tabindex
属性的值设为 0,以便让键盘用户能够访问它。
音视频:使用 track
元素为音视频提供文本或者描述。
表格:使用 thead
、tbody
和 tfoot
元素区分表格头,表格主体和表格底部,为表头单元格设置正确的 scope
属性,用于指示表头单元格所对应的列或行,同时添加 aria-label
属性来描述表格的内容。
表单:为表单控件添加标签,并使用 <label>
元素进行关联,同时给所有表单控件添加 aria-label
属性。
键盘可访问性
用户应当能够通过键盘使用网站,而不必使用鼠标。在网站中,Tab 键用于获取焦点,并切换到下一个可聚焦元素。因此,网站应该确保它提供了正确的 Tab 键顺序,并且可以使用有高对比度的焦点轮廓,以方便键盘用户的操作。
:focus { outline: 1px solid black; }
聚焦访问性
用户可以从屏幕阅读器等辅助技术获得关于焦点位置的通知。因此,我们需要确保适当地操作焦点,并提供可见和隐藏的状态。根据不同的焦点状态,可以使用 :focus
和一个类名来分别处理元素的样式,并使用 aria-hidden
属性来指示隐藏的状态。
音频和视频访问性
如果网站包含视频或音频资料,请确保提供其中的字幕和描述。使用 <track>
元素来提供字幕和/或音频描述,同时给音频和视频元素添加 aria-describedby
属性和对应的描述文本。
<video controls src="myvideo.mp4" aria-describedby="myvideo-descriptions"> <track label="English subtitles" kind="subtitles" srclang="en" src="myvideo-en.srt"> </video> <div id="myvideo-descriptions"> <p>这个视频是介绍无障碍网站的优化方法……</p> </div>
结语
无障碍网站的本质是为所有的用户提供友好的访问体验。因此,在设计和开发网站时,应该考虑到不同用户的需求,提供良好的 HTML 结构、ARIA 标准和优雅的实现方式,以实现无障碍访问。希望本文的介绍能够给您创造更具价值的网站的灵感,也让访问者的体验更加愉快和顺畅。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6781f660935627c900f19e0e