html表单中显式label与隐式label及屏幕阅读器的影响

label元素平淡无奇,就是为表单输入元素贴上标签,方便辨识。label有个很重要的属性是for,可以将label与其标识的输入元素绑定在一起,提供更好的操作体验。

显式label

<label for="foo"></label><input type="text" id="foo">

重置和提交按钮,图片按钮以及button元素按钮不用使用显式label,因为它们已经有了隐式标签,如value 和 alt 属性值,button元素的内容。

显式的label对Accessibility是最友好的。

隐式label

将输入元素直接包裹在label标签之内,for属性也可以省略了,甚至输入元素的id也可以省略了。

<label>sometext<input type="text"></label>

IE6不支持隐式label

混合式label

即使用label的for特性,又将输入元素包裹在label之内
   
<label for="foo"><input type="text" id="foo"></label>

表单显式label和隐式label对屏幕阅读器用户的影响

显式label

    也就是说为label元素添加for属性,其属性值与表单控件的id属性值一致。
    重置和提交按钮(<input type="reset"/> 、<input type="submit"/>), 图片按钮(<input type="img"/>)以及脚本按钮 (<button></button>)不用使用显式label,因为它们已经有了隐式标签,如value 和 alt 属性值,button元素的内容。

<label for="firstname">First name:</label><input type="text" name="firstname" id="firstname" tabindex="1" />

隐式label

    根据HTML 4.01 规范, 通过label 元素包裹 表单控件和label文本可创建”隐式label”。
    由于一些浏览器(IE6)不支持隐式label,WCAG2.0不建议使用。

<label>First name: <input type="text" name="firstname" /></label>

另外一种写法,即上面两种方法的结合:

<label for="firstname">First name:
<input type="text" name="firstname" id="firstname" tabindex="1" /></label>

两者的区别

使用屏幕阅读器NVDA和IE9测试发现,屏幕阅读器用户听到的提示内容是不同的:

    显式label写法:“fFirst name: 编辑框 空白(或内容)”
    隐式label写法:“First name: 文本 First name: 编辑框 空白(或内容)”–两种方法一致,不过最后一种写法在所有浏览器下点击label都无法激活表单控件(笔者demo手误,已更改),强烈不推荐这种写法。

可以看出,nvda会重复label文本内容,屏幕阅读器用户更容易理解显式label写法的提示。

更新:今日看到 HTML5 Accessibility Chops: form control labeling 一文做了同样的测试,作者测试了更多的浏览器和屏幕阅读器,今天的测试,得到了同样的结论:使用for 和 id 并且表单控件不放在label元素内是最健壮的方法。

时间: 2024-10-16 13:51:15

html表单中显式label与隐式label及屏幕阅读器的影响的相关文章

Android显式启动与隐式启动Activity的区别介绍_Android

前段时间立志坚持写博客,但是发现自己的积累的确不多,于是假期泡了泡图书馆,读了一些很有价值的文章.收获颇多,今天的文章分享为主,共同学习. 为什么要写显式启动与隐式启动Activity.这源于自己的一次面试,被Baidu工程师问道,但是后来觉得自己回答的不好,废话少说,进入正题. 如题,Android的Acitivity启动大致有两种方式:显式启动与隐式启动.下面分别介绍: A:显式启动 对于初学者来说,这个最常见,下面用代码来解释什么是显式启动. 复制代码 代码如下: Intent inten

Scala入门到精通——第十九节 隐式转换与隐式参数(二)

作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式参数中的隐式转换 函数中隐式参数使用概要 隐式转换问题梳理 1. 隐式参数中的隐式转换 前一讲中,我们提到函数中如果存在隐式参数,在使用该函数的时候如果不给定对应的参数,则编译器会自动帮我们搜索相应的隐式值,并将该隐式值作为函数的参数,这里面其实没有涉及到隐式转换,本节将演示如何利用隐式参数进行隐式转换,下面的代码给定的是一个普通的比较函数: object ImplicitP

Scala入门到精通——第十八节 隐式转换与隐式参数(一)

本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介 在scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性.要想更进一步地掌握scala语言,了解其隐式转换的作用与原理是很有必要的,否则很难得以应手地处理日常开发中的问题. 在scala语言中,隐式转换是无处不在的,只不过scala语言为我们隐藏了相应的细节,例如scala中的类继承层次结构中: 它们存在固有的隐式转换,不需要人工进行干预,例如Float在必要

oracle显式授权和隐式授权

oracle对象的授权 Oracle授权 一.授权语法 GRANT语法: 1.显式授权(直接将对象授权给用户) GRANT privilege [, ...] ON object [, ...]  TO  { Public| Group | Username|role} [WITH GRANT OPTION ] 例子grant read,write on directory dir_home to public 2.隐式授权(通过将角色授权给用户) GRANT role TO  { Public

J2EE探索者:隐式对象的多种用法

j2ee|对象 接着上月对会话作用域的介绍,企业 Java 专家 Kyle Gabhart 深入研究了 JSP 隐式对象的多种用法.接下来,他将介绍 9 个隐式对象,解释每个对象的用途(或者多种用途),最后给出一些怎样在 JSP 编程中使用这些便利工具的最佳实践.您可以到我们的 讨论论坛 中分享您对这篇文章或者 J2EE 探索者 系列中的任何其他文章的想法. 本期的 J2EE探索者 是上个月的 正确处理会话作用域入门 的续篇.除了访问会话作用域之外,JSP 隐式对象还可以用来处理 HTML 参数

J2EE探索者: 隐式对象的多种用法

本期的 J2EE探索者是上个月的 正确处理会话作用域入门 的续篇.除了访问会话作用域之外,JSP 隐式对象还可以用来处理 HTML 参数,转发请求到一个 Web 组件,包括组件的内容.通过 JSP 容器的日志数据.控制输出流,处理异常,等等. 本月,您将学到在 JSP 页面中使用隐式对象.我们首先简要概括 JSP 架构,其中包括了隐式对象.然后,我将介绍每个对象并描述它的核心功能.最后,我们将给出使用每种类型的对象和它提供的容器管理服务的一些最佳实践. 隐式对象简介 JSP 架构背后的理念是提供

SQL Server优化器特性-隐式谓词

原文:SQL Server优化器特性-隐式谓词 我们都知道,一条SQL语句提交给优化器会产生相应的执行计划然后执行输出结果,但他的执行计划是如何产生的呢?这可能是关系型数据库最复杂的部分了.这里我为大家介绍一个有关SQL Server优化器的特性-隐式谓词,并简单介绍在此特性下如何根据场景控制优化器的行为.    在这里我通过一个简单的实例来给大家说明下. code CREATE TABLE T1 (A INT, B INT) CREATE TABLE T2 (A INT, B INT) set

MySQL隐式类型的转换陷阱和规则_Mysql

前言 相信大家都知道隐式类型转换有无法命中索引的风险,在高并发.大数据量的情况下,命不中索引带来的后果非常严重.将数据库拖死,继而整个系统崩溃,对于大规模系统损失惨重.所以下面通过本文来好好学习下MySQL隐式类型的转换陷阱和规则. 1. 隐式类型转换实例 今天生产库上突然出现MySQL线程数告警,IOPS很高,实例会话里面出现许多类似下面的sql:(修改了相关字段和值) SELECT f_col3_id,f_qq1_id FROM d_dbname.t_tb1 WHERE f_col1_id=

隐式意图匹配规则

Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件.使用Intent可以激活Android应用的三个核心组件:活动.服务和广播接收器.即Android的四大组件中活动.服务和广播接收器.内容提供者中只有内容提供者不是被Intent激活的. Intent可以划分成显式意图和隐式意图. 显示意图适合用于应用的内部,速度较快. 隐式意图有对应的查找规则