概述

很多地方比如官网中需要提升 html 的可访问性,我参考 element-ui,总结了一套提升可访问性的方案,记录下来,供以后开发时参考,相信对其他人也有用。

可访问性

可访问性基本上分为 2 类:

  1. 键盘可访问性:要求页面上的所有可交互的地方均可通过键盘操作。
  2. AT可访问性:AT 是 Assistive Technologies 的简写,主要是方便残障用户和网站内容进行交互。

键盘可访问性

键盘可访问性有很多内容,但是我觉得主要实现如下 2 点即可:

1.可以使用 tab 来获取焦点。这其中用到的主要方法是 tabindex

  • tabindex等于 -1:不能使用 tab 键获取焦点,如果元素是隐藏的,那么它的 tabindex 必须设置为 -1;
  • tabindex等于 0:能使用 tab 键获取焦点,适用于无顺序的内容
  • tabindex等于 xx:能使用 tab 键获取焦点,xx 的值越大,越在前面

示例如下:

<!-- 没有tabindex 属性的话, 这些 <span> 元素不会被键盘focus中 -->
<ul>
<li tabindex="0">
Include decorative fruit basket
</li>
<li tabindex="0">
Include singing telegram
</li>
<li tabindex="0">
Require payment before delivery
</li>
</ul>

需要说明的是:html 里面的 a、button、form 标签即使不添加 tabindex 也能用 tab 键获取焦点。

2.可以使用上、下、左、右键移动选项。比如一个 popover 组件,弹出的内容是可供选择的,那么需要可以使用上、下键进行选择,方法是监听键盘的上、下键,然后监听 enter 键进行选择。示例如下:

<template>
<popper
trigger="clickToOpen"
:options="{
placement: 'top',
modifiers: { offset: { offset: '0,10px' } }
}">
<ul
class="popper"
@keydown.down.prevent="navigateOptions('next')"
@keydown.up.prevent="navigateOptions('prev')"
@keydown.enter.prevent="selectOption"
>
<li tabindex="0">
Include decorative fruit basket
</li>
<li tabindex="0">
Include singing telegram
</li>
<li tabindex="0">
Require payment before delivery
</li>
</ul> <button slot="reference">
Reference Element
</button>
</popper>
</template> <script>
import Popper from 'vue-popperjs';
import 'vue-popperjs/dist/vue-popper.css'; export default {
components: {
'popper': Popper
},
methods: {
navigateOptions() {
// ...
},
selectOption() {
// ...
},
},
}
</script>

AT 可访问性

AT 可访问性我觉得也主要分为以下 2 点:

1.尽量使用语义化标签;图像使用 alt 属性描述图像内容;视频使用 title 属性。

2.用 role 来标记这一块 html 是用来干什么的,文档在这里:文档。示例如下:

<div id="main" role="main">
<h1>Avocados</h1>
<!-- main section content -->
</div>

我觉得如下 role 一定需要标出来:

navigation、main、article、dialog、search、img、banner、button

如果希望更进一步,可以参考 ARIA文档 使用 ARIA。

提升键盘可访问性和AT可访问性的更多相关文章

  1. Microsoft Office Excel 不能访问文件及COM无法访问

    Microsoft Office Excel 不能访问文件及COM无法访问 Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有: 1 文件名称或路径不存在. 2  ...

  2. atitit.编程语言 程序语言 的 工具性 和 材料性 双重性 and 语言无关性 本质

    atitit.编程语言 程序语言 的 工具性 和 材料性 双重性 and 语言无关性 本质 #---语言的 工具和材料双重性 有的人说语言是个工具,有的人说语言是个材料..实际上语言同时属于两个属性. ...

  3. wampserver2.5 apache2.4.9:forbidden,本机可以访问,局域网内部能访问。

    wampserver2.5 apache2.4.9:forbidden,本机可以访问,局域网内部能访问. 因为做项目,多人分工,需要局域网内访问各自的项目. 然后安装了wampserver2.5,Ap ...

  4. Linux 如何设置只允许域名访问站点而禁止IP访问站点

    最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...

  5. 用shell统计访问日志里每个ip访问次数【转】

    今天,要统计一个系统的每个ip访问次数,于是我找到该系统访问日志,并写脚本实现.   访问日志情况: [root@qular ~]# cd /usr/local/nginx/logs/ [root@q ...

  6. 为什么用IP无法访问网站,域名可以访问?

    我们访问网站都是通过域名进行访问的,偶尔会使用网站IP进行访问,如学校通常使用IP登录教务处,但很多的时候我们无法通过ip进行访问其他网站,这就涉及到服务器的问题了. 网站都是依托在服务器上面的,而服 ...

  7. SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域

    SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域 >>>>>>>>>>>> ...

  8. 安装完iis后本机用IP可以访问,别的电脑不能访问

    局域网IIS无法访问的解决方法 无法访问局域网内其它电脑中的IIS,自己可以访问,但别的电脑不行一般发生这种情况时操作系统是XP第二版. 具体操作如下:1.打开控制面版2.打开Windows防火墙 5 ...

  9. SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域[转]

    SpringMvc支持跨域访问,Spring跨域访问,SpringMvc @CrossOrigin 跨域 原文地址:https://www.cnblogs.com/fanshuyao/p/716847 ...

  10. Nginx禁止IP访问,只允许域名访问

    Nginx禁止IP访问,只允许域名访问 我们在使用nginx的过程中会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了. 1.直接返回403错误 server { listen de ...

随机推荐

  1. kubernetes资源清单之Deployment

    Deployment为Pod和ReplicaSets提供声明性更新 示例 --- apiVersion: apps/v1 kind: Deployment metadata:     name: de ...

  2. deepin禁用笔记本自带键盘

    参考命令: sudo apt install xinput xinput xinput list-props 'AT Translated Set 2 keyboard' xinput set-pro ...

  3. z-index无效失效的解决

    解决办法: 父级元素加上position:relative;并设置z-index父级元素的z-index优先,其中包含的元素的z-index是相对于父级元素的index <div style=& ...

  4. java线程基础巩固---线程生产者消费者的综合实战结合Java8语法

    基于上一次[http://www.cnblogs.com/webor2006/p/8909558.html]学习的多个生产者与多个消费者模型,此次用另外一个案例来进一步巩固线程之间的调度处理,这里还是 ...

  5. Linux之more命令

    命令解释 more命令类似与cat命令,却比cat命令强大,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作. 命令说明 more [选项] 文件.. 命令选项 -d    显示帮助 ...

  6. 将本地代码使用Git上传更新至Github

    注册.配置git 1. 首先注册git image 2.然后下载.配置git 百度“git下载”,然后默认安装,注意的是最后要添加环境变量,最后安装结果如下: image 配置如下: 1.设置本地的s ...

  7. django之表多对多建立方式、form组件、钩子函数 08

    目录 多对多三种创建方式 1.全自动(用ManyToManyField创建第三张表) 2.纯手写 3.半自动 form组件 引入 form组件的使用 forms组件渲染标签 form表单展示信息 fo ...

  8. 逻辑卷----LVM的基础和应用

    逻辑卷管理器 Logical Volume Manager-------逻辑卷宗管理器.逻辑扇区管理器.逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume managem ...

  9. HDU 5113 Black And White ( 2014 北京区预赛 B 、搜索 + 剪枝 )

    题目链接 题意 : 给出 n * m 的网格.要你用 k 种不同的颜色填给出的网格.使得相邻的格子颜色不同.若有解要输出具体的方案 分析 : 看似构造.实则搜索.手构构半天没有什么好想法 直接搜就行了 ...

  10. 【原创】时隔十年,再度审视Performance Testing,性能测试,Load Runner,和企业级性能测试解决方案

    软件测试入行是2006年,最先学习的测试工具囊括了QTP,Test Director,Load Runner,Rational Robot,Rational Performance: 那时的操作系统是 ...