说说HTML5中label标签的可访问性问题

标签: css相关 HTML5 label 可用性 可访问性 | 发表时间:2011-07-28 01:02 | 作者:张 鑫旭 BeerBubble
出处:http://www.zhangxinxu.com/wordpress

by zhangxinxu from http://www.zhangxinxu.com
本文地址:http://www.zhangxinxu.com/wordpress/?p=1809

一、开篇叨叨

一般稍微有些经验的页面制作人员都知道label标签可以优雅地扩大表单控件元素的点击区域,例如,单纯的单选框
点击区域就鼻屎那么大的地方,经常会点不到位置。因此,label标签的使用对于提高页面的可用性可访问性是很有帮助的。

我们看看点评网的注册页面那个同意条款的复选框,非要点在复选框上才能选中:
大众点评网注册页面复选框的点击区域问题 张鑫旭-鑫空间-鑫生活

查看HTML发现复选框idlabel标签的for属性值都是空,不解~~

像其他网站的登录或是注册处的控件的点击区域就做得蛮不错的,像是豆瓣网, 新浪微博等:
豆瓣网登录记住我点击区域的扩大 张鑫旭-鑫空间-鑫生活 扩大控件点击区域微博 张鑫旭-鑫空间-鑫生活

我们一般有两种方法来优雅地扩展表单控件的点击区域。其一是使用label标签包裹控件元素,另外的方法就是使用label标签的for属性与控件元素的id相关联。

HTML5草案中有如果段文字:

The label represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element’s labeled control, either using for attribute, or by putting the form control inside the label element itself.

中文意思就是:label标签代表了用户界面上的一个标题,该标题可以与制定的表单控件相关联,即所谓的label元素标记控件。可以使用for属性,或是把表单控件放在label元素的里面实现该关联。

这就意味着,我们可以有如下些做法:
使用for和id关联控件

<p><label for="test">标签</label> <input name="input" type="text" id="test" /></p>

label标签包裹控件

<p><label>标签 <input name="input" type="text" /></label></p>

双管齐下

<p><label for="test2">标签 <input name="input" type="text" id="test2" /></label></p>

您可以狠狠地点击这里:HTML5中label元素使用demo

基本上,在大部分浏览器下(IE6下label标签包裹控件的方法是不顶用的),三个方法都是可以扩大单行文本框控件的点击区域的(点击“标签”二字,文本框即focus)。
demo页面的效果截图 张鑫旭-鑫空间-鑫生活

二、HTML5与HTML 4.01 label的不同

其实,上面提及的几个方法并不是HTML5中的新生事物,早在HTML4.0的时候,跟上面一模一样的东东就出现滴说。不过其中有个不一样的就是,在HTML4中,偶们可以给控件元素分配多个label元素。这种感觉就像是古时候支持一夫多妻制一样。

More than one LABEL may be associated with the same control by creating multiple references via the for attribute.

上面原文引用的中文意思是:可以使用超过1个label通过for属性关联同一个控件。

上面这段话在HTML5中玩起了躲猫猫,没看到——没有明确地说禁止使用,也没有明文说允许使用。我们应当注意到,无论是浏览器还是辅助技术
都对多label元素提供了强有力的支持。

如果您看到下面的文字,可能是由于在其他网站或是RSS中阅读本文,本文原地址:http://www.zhangxinxu.com/wordpress/?p=1809,本文作者:张鑫旭,来自张鑫旭-鑫空间-鑫生活,访问原出处更多精彩内容。

三、当下控件标签化在浏览器和辅助技术下的可用性可访问性支持

根据Steve Faulkner(高级web可用性可访问性顾问)的测试,使用forid找到控件元素的方法要比将控件放在label标签内的健壮性好很多。同时他还发现使用aria-labelledby属性跨浏览器和辅助技术的健壮性要比使用标准的控件元素放在label标签下的方法强。

完整测试和结果:主流浏览器和屏幕阅读器控件标签化支持测试

例如,在主流浏览器其上的测试结果:
浏览器label可访问性测试结果截图 张鑫旭-鑫空间-鑫生活

上图中框框的结果就显示了上面的些结论:forid可用性可访问性好于label标签包裹,非标准aria-labelledby属性居然有更好的可用性可访问性。

其余的结果与数据您有兴趣可以仔细看看比对。

对于我们前端而言,没有必要了解很深入,这里就不一一分析各个结果。不过,一些建议或是看法还是很值得分享下的。

给开发者的建议
在浏览器修复他们的些可用性可访问性问题之前,如果你希望你的控件可以被辅助技术理解,建议使用for + id方法,而不要因为懒得蛋疼乳酸,直接把控件元素套在label标签之下。也不要使用看上去更保险的“双管齐下”的方法。

给浏览器和辅助技术开发商建议

  • Chrome: 实现对for/id以及label 元素包裹的可用性可访问性支持。
  • Safari:实现label元素包裹的可用性可访问性支持。
  • Firefox:修复当for/id合包裹体被使用时候多标签内容的问题。
  • NVDA:修复控件元素在label之内重复朗读的的问题

四、结尾部分

可用性可访问性问题,怎么讲呢?很多时候,很多前端er们,做出个结构良好,功能完善的页面就已经算是不错了,再要求其考虑可能性的问题,就有点赶鸭子上架的感觉。

说句招口水的话,可访问性问题就像是有钱人手中的LV宝宝,我们对大多数的前端er们,对大多数的中小网站们,没有必要花过多的精力在这个上面,毕竟人力财力有限。但是,不管你们信不信,有一点我是很相信的,知道了解web中各个可用性问题无论是对自己的成长,还是今后的工作还是很有帮助的。

参考文章:HTML5 Accessibility Chops: form control labeling

原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]
本文地址:http://www.zhangxinxu.com/wordpress/?p=1809

(本篇完)

有话要说,点击这里发表评论。

相关 [html5 label 标签] 推荐:

说说HTML5中label标签的可访问性问题

- BeerBubble - 张鑫旭-鑫空间-鑫生活
本文地址:http://www.zhangxinxu.com/wordpress/?p=1809. 一般稍微有些经验的页面制作人员都知道label标签可以优雅地扩大表单控件元素的点击区域,例如,单纯的单选框. 点击区域就鼻屎那么大的地方,经常会点不到位置. 因此,label标签的使用对于提高页面的可用性可访问性是很有帮助的.

关于label标签与表单控件的显式联系和隐式联系

- - ITeye博客
在html中,

HTML5废弃的特性及部分标签语义

- mingelz - W3C标准WEB前端DHTML精英俱乐部
如果页面中存在以下情况,在做规范检测时将遇到警告信息. border属性不应该继续出现在img元素中;. border如果出现在img元素中,其值必须为0;. language属性不应该继续出现在script元素中;. language如果出现在script元素中,其值必须为"JavaScript";.

【转载】HTML5 Audio/Video 标签,属性,方法,事件汇总

- - HTML5研究小组
autoplay:自动播放. controls:浏览器自带的控制条.

【转载】HTML5的视频标签的一些须知

- - HTML5研究小组
HTML5在互联网的革新高潮的不断冲刷着新的记录. 其中,HTML5最重要的平衡就是在视频方面的支持达到了最佳,也就是说用户不需要安装额外的插件(在PC上或者其它的设备上)来实现视频的播放. 随着HTML5标注制定的不断完善,许多的哦开发人员和设计人员开始关注与实战新的编码标准,原因可能是新的标准缺乏实战和相应的实例示范.

HTML5标签的语义认知和理解(2)

- - CSDN博客推荐文章
昨天说到了 nav元素,nav元素的确是描述导航,但这个导航应该是对本网站而言的,不应该将 nav用到对于外部的友情链接啊,收藏夹或什么的,总之,对元素来说,要实施他正确的语义才是我们要讨论和研究的事情. 我们可以用 article来描述页面想表达的实际内容,也就是说,这个内容页的核心信息. 你可以这样考虑,这个页面中绝对不能去掉的内容有哪些(比如屏幕大小不够,带宽不够,存储空间不够,在各种恶劣的环境下),这些绝对不能去掉的,代表本业务核心价值的信息,就可以用 article来描述.

HTML5标签的语义认知和理解(1)

- - CSDN博客推荐文章
随着服务器的处理能力越来越大,互联网级开发终于开始全面火热(前几年我和很多人说,不要光关注所谓企业级开发,未来马上将进入互联网级开发),HTML5的预热为前端技术带来了更多机会和热点. 我用的是VS2008开发工具,作为懒人(对于开发工具有强烈的依赖性,懒得记API单词,懒得多打字,懒得查手册)的代表,Intellisense 对我一直是非常重要的事情,我喜欢微软的开发平台,也就是应为VS开发工具有良好的高速的Intellisense 我才喜欢再微软的平台上开发,对于习惯用记事本的牛人,我一直内心仰慕但坚决不从.

Polaroid 推出 Z340 数码拍立得相机,Lady Gaga 的 Grey Label 还要等多久啊!

- Tin - Engadget 中国版
虽然它并没有当今指标流行歌手代言的光芒,但这部 Polaroid Z340 数位拍立得相机,也与尚未上市的 Grey Label 相机有着相似的有趣特点. 定价 US$300(约 1,900 元人民币)的它,可拍摄 1,400 万画素的静态照片并可储存在 SD 卡中,还可以用 ZINK 墨水直接把数字影像打印出来(每次充电可印 75 张),缅怀那个使用底片拍立得的青春岁月,且还是喜欢实体照片的感觉吗.

HTML5 logo 发布

- Greyby - 酷壳 - CoolShell.cn
2011年1月19日,W3C发布了HTML5的log,打开W3C的页面,下在的图片印入眼前. 我的第一感觉,就像是看到了小时候看的八一电影制片产的电影. 这分明是号召全世界的无产Web程序员们团结起来,不畏艰难,不怕牺牲,一定要把HTML5的革命事业进行到底. 所以,请各位Web程序员不但在你们的HTML5的网页上加上下面的徽章(关于各个徽章的含义,请参看这里).

html5 canvas入门

- - Marshal's Blog
可以把canvas看做div,不过,它的长和宽不能通过css来定义,要使用标签属性:. 或者javascript对象属性设置:. 使用canvas,只有一种操作方式,使用javascript. 获得canvas对象的上下文对象,该对象是操作canvas的主要对象:. 使用canvas画最简单的线, 点击运行示例,结果看起来是这样:.