Html 标签";至于;和输入“;id";

Html 标签";至于;和输入“;id";,html,input,accessibility,Html,Input,Accessibility,我目前正在为CMS开发一个表单模块,这样我们的用户就可以创建自己的表单来显示在他们的网站上,我正在努力确保所有的表单都可以通过标签等方式访问 我的问题是,如果您有一个的,它带有一个[for]属性来链接到输入的[id],那么[id]实际上是否意味着什么?它是读的吗?还是只是为了把它们联系起来 例如 名称 或 名称 这些在屏幕阅读器上会有相同或不同的结果吗?不会,永远不会 如果您将自己置于用户可以看到id或class的情况下,那么您可能犯了一些可怕的错误,或者您试图获得非自然的代码透明度(例如,

我目前正在为CMS开发一个表单模块,这样我们的用户就可以创建自己的表单来显示在他们的网站上,我正在努力确保所有的表单都可以通过标签等方式访问

我的问题是,如果您有一个
,它带有一个
[for]
属性来链接到输入的
[id]
,那么
[id]
实际上是否意味着什么?它是读的吗?还是只是为了把它们联系起来

例如

名称

名称
这些在屏幕阅读器上会有相同或不同的结果吗?

不会,永远不会

如果您将自己置于用户可以看到
id
class
的情况下,那么您可能犯了一些可怕的错误,或者您试图获得非自然的代码透明度(例如,这可能适用于教室情况)

class
id
属性仅用于编程目的。它们应该遵循您为自己设置的命名约定,并且从程序员的角度来看尽可能有意义

如果您有一个
,它带有一个
[for]
属性来链接到输入的
[id]
,那么
[id]
实际上是否意味着什么

浏览器语义*指浏览器如何识别DOM节点以及浏览器将向使用辅助导航的用户读取的内容

[id]
[class]
属性不会增加语义。在可能的情况下,仍然使用描述性ID和类很重要,但这只是为了使开发更容易

它是读的吗

没有。据我所知,
[id]
属性从未通过网站的正常操作直接读取给用户。请参阅下面关于文档片段标识符的注释

还是只是为了把它们联系起来

它告诉标签标签正在标记哪个
(或
..),还提供一些UI功能,例如在单击、点击或以其他方式触发标签时将焦点移动到相关输入

当标签元素被聚焦时,浏览器将知道如何告诉屏幕阅读器读取与该元素相关联的标签


[name]
属性如何

屏幕中,阅读器不会读取
[name]
属性,因为它不表示任何语义,但是对于
GET
请求,
[name]
属性将用作查询字符串中的键。查询字符串可能会被用户读取,因此值得考虑使用人类可读的
[name]
而不是自动生成的东西


文档片段标识符呢

如果您计划使用
[id]
n或在页面下方,则当
[id]
属性的值成为URL的哈希值时,可以读取该值。就像使用
[name]
属性一样,对于这些情况,可能值得考虑使用人类可读的
[id]



*一个定义为意义的词,这使得讨论它自己的意义…困难且相当元化

它不一定意味着什么,但最好将它标记为逻辑性的东西,这样其他人,包括你未来的自己,就不会完全被其他东西混淆,为了你自己的理智,试着让名字有意义。当我做自己的html时,我的ID是有意义的,但在这种情况下,当我在数据库中循环时,ID将被输入1,input2input3等。如果您不能使用
进行
名称
我在其他地方读到过,但是
标签
输入
@Liam的一个单独的div中,我相信我刚才在末尾添加了一个关于这一点的注释。这个答案在很大程度上仍在进行中。如果你注意到我还需要补充什么,请告诉我。好的,谢谢。这是有道理的。我通常会使用描述性ID,但由于它位于循环中,它们被命名为input1、input2、input3等。
<label for="input1">Name</label>
<input id="input1" />
<label for="name">Name</label>
<input id="name" />