标签 "for" 和输入 "id"
Label "for" and Input "id"
我目前正在为 CMS 开发一个表单模块,以便我们的用户可以创建自己的表单以显示在他们的网站上,我正在努力确保所有这些都可以通过标签等进行访问。
我的问题是,如果你有一个 <label>
对应 <input>
并且 [for]
属性到 link 到输入的 [id]
, [id]
实际上必须 意味着 什么吗?读了吗?还是只是 link 他们?
例如
<label for="input1">Name</label>
<input id="input1" />
或
<label for="name">Name</label>
<input id="name" />
这些在屏幕上的结果会相同还是不同 reader?
不,从来没有。
如果您将自己置于 id
或 class
对用户可见的情况下,那么您可能做错了一些可怕的事情,或者您正试图让代码透明度(例如,适用于 class 房间的情况)。
class
和 id
属性仅用于编程目的。它们应该遵循您为自己设定的命名约定,并且从程序员的角度来看尽可能有意义。
If you have a <label>
for an <input>
with a [for]
attribute to link to the [id]
of the input, does the [id]
have to actually mean something?
浏览器语义* 是指浏览器如何识别 DOM 节点以及浏览器将向使用辅助导航的用户读取的内容。
[id]
和 [class]
属性 不会 添加语义。在可能的情况下仍然使用描述性 ID 和 类 很重要,但仅限于使开发更容易的范围内。
Is it read?
没有。据我所知,[id]
属性永远不会通过网站的正常操作直接读给用户。请参阅下面关于文档片段标识符的注释。
Or is it just to link them?
它告诉标签<input>
(或<select>
或<textarea>
…)标签正在标记哪个标签,并且还提供了一些UI功能,例如将焦点移动到单击、点击或以其他方式触发标签时的相关输入。
当标签元素获得焦点时,浏览器会告诉屏幕 reader 读取与该元素关联的标签。
[name]
属性呢?
在 <form>
屏幕中 readers 不会读取 [name]
属性,因为它不表示任何语义,但是对于 GET
请求 [name]
属性将用作查询字符串中的键。查询字符串 可能 会被用户读取,因此值得考虑使用人类可读的 [name]
而不是自动生成的内容。
文档片段标识符呢?
如果您计划使用 [id]
来 <a>
锚定页面,那么当 [id]
属性的值成为URL。就像 [name]
属性一样,在这些情况下可能值得考虑使用人类可读的 [id]
。
*一个定义为意义的词,这使得讨论其自身的意义……困难且相当元
我目前正在为 CMS 开发一个表单模块,以便我们的用户可以创建自己的表单以显示在他们的网站上,我正在努力确保所有这些都可以通过标签等进行访问。
我的问题是,如果你有一个 <label>
对应 <input>
并且 [for]
属性到 link 到输入的 [id]
, [id]
实际上必须 意味着 什么吗?读了吗?还是只是 link 他们?
例如
<label for="input1">Name</label>
<input id="input1" />
或
<label for="name">Name</label>
<input id="name" />
这些在屏幕上的结果会相同还是不同 reader?
不,从来没有。
如果您将自己置于 id
或 class
对用户可见的情况下,那么您可能做错了一些可怕的事情,或者您正试图让代码透明度(例如,适用于 class 房间的情况)。
class
和 id
属性仅用于编程目的。它们应该遵循您为自己设定的命名约定,并且从程序员的角度来看尽可能有意义。
If you have a
<label>
for an<input>
with a[for]
attribute to link to the[id]
of the input, does the[id]
have to actually mean something?
浏览器语义* 是指浏览器如何识别 DOM 节点以及浏览器将向使用辅助导航的用户读取的内容。
[id]
和 [class]
属性 不会 添加语义。在可能的情况下仍然使用描述性 ID 和 类 很重要,但仅限于使开发更容易的范围内。
Is it read?
没有。据我所知,[id]
属性永远不会通过网站的正常操作直接读给用户。请参阅下面关于文档片段标识符的注释。
Or is it just to link them?
它告诉标签<input>
(或<select>
或<textarea>
…)标签正在标记哪个标签,并且还提供了一些UI功能,例如将焦点移动到单击、点击或以其他方式触发标签时的相关输入。
当标签元素获得焦点时,浏览器会告诉屏幕 reader 读取与该元素关联的标签。
[name]
属性呢?
在 <form>
屏幕中 readers 不会读取 [name]
属性,因为它不表示任何语义,但是对于 GET
请求 [name]
属性将用作查询字符串中的键。查询字符串 可能 会被用户读取,因此值得考虑使用人类可读的 [name]
而不是自动生成的内容。
文档片段标识符呢?
如果您计划使用 [id]
来 <a>
锚定页面,那么当 [id]
属性的值成为URL。就像 [name]
属性一样,在这些情况下可能值得考虑使用人类可读的 [id]
。
*一个定义为意义的词,这使得讨论其自身的意义……困难且相当元