我目前正在为CMS的表单模块工作,以便我们的用户可以创建自己的表单以显示在他们的网站上,我正在尝试确保所有表单都可以通过标签等访问。
我的问题是,如果<label>
<input>
[for]
属性[id]
链接到输入的[id]
,那么{{1}实际上意味着某事?它读了吗?或者只是链接他们?
例如
<label for="input1">Name</label>
<input id="input1" />
或
<label for="name">Name</label>
<input id="name" />
这些在屏幕阅读器上会有相同或不同的结果吗?
答案 0 :(得分:7)
如果
<label>
<input>
[for]
属性[id]
链接到输入的[id]
,那么[id]
是否必须实际什么意思?
浏览器语义*指的是浏览器如何识别DOM节点以及浏览器将向使用辅助导航的用户读取的内容。
[class]
和[id]
属性不添加到语义。在可能的情况下仍然使用描述性ID和类非常重要,但这只是为了使开发更容易。
是否已阅读?
没有。据我所知,<input>
属性永远不会通过网站的正常操作直接读给用户。请参阅下面有关文档片段标识符的说明。
或者只是链接它们?
它告诉标签标签标注的<select>
(或<textarea>
或[name]
...),并提供一些UI功能,例如在标签时将焦点移动到相关输入单击,点击或以其他方式触发。
当标注元素被聚焦时,浏览器会知道告诉屏幕阅读器读取与元素相关联的标签。
<form>
属性怎么样?
在[name]
屏幕中,读者不会读取GET
属性,因为它不表示任何语义,但对于[name]
请求,将使用[name]
属性作为查询字符串中的键。可以向用户读取查询字符串 ,因此值得考虑使用人类可读的[id]
而非自动生成的内容。
文档片段标识符怎么样?
如果您计划在页面中使用<a>
到[id]
nchor,则当[name]
属性成为URL的哈希值时,可以读取该值。与[id]
属性一样,在这些情况下使用人类可读的 =SUMPRODUCT(--(A1:A5<>"")*--(B1:B5<>""))
值得考虑。
*这个词的定义是有意义的,这使得讨论它自己的含义......困难而且相当元
答案 1 :(得分:0)
不,不是这样的。
如果您将自己置于用户可以看到id
或class
的情况下,那么您可能已经做了一些可怕的错误,或者您尝试使用不自然级别的代码透明度。例如,这可能适合在教室中使用..
class
和id
属性仅用于编程目的。它们应该遵循您为自己设置的命名约定,并从程序员的角度尽可能多地理解。