HTML 内的名称、id、咏叹调、角色属性
Name, id, aria, role attributes within HTML
我知道 name 和 id 在将它们包含到 Web 表单元素中时具有关键重要性,所有这些属性,如 name、id、role、aria-xxx、title,都应始终包含在 html元素?
那么,每篇文章、每个部分、每个导航菜单项都必须具有所有这些属性吗?或者其中一些将与某些元素相关,例如 "name" 用于网络表单或 "id" 用于 javascript 定位?不幸的是,如果某些属性不受支持或不需要,浏览器不会 return 向我发送验证消息。请指点。
在表格中可以吗?
<label for=”first-name”>First Name</label>
<input type=”text” id=”first-name” name=”first-name” required aria-required=”true” role="textbox" aria-labelledBy="something">
如您所见,我将 required AND aria-required 和角色放在一起,可能会发生冲突吗?我知道 role attribute=textbox 不是正确的,只是为了说明我的疑问。提前致谢。
这是个好问题。 TLDR 是不,您不必为所有 HTML 元素添加所有这些属性。更详细的解释,请查看以下文字。
您提到的每个属性都扮演着不同的角色。以你说的那几个为例:
id:用来给元素一个唯一的标识符。对于使用 JavaScript getElementById
进行引用很有用,对于在同一页面中使用其他属性进行引用也很有用(例如 <label for="first-name">
如何通过 id 引用输入元素)。
name:主要用于读取表单元素的数据。在通过传统的 POST 调用服务器发布表单的某个时间点,name
属性将表示服务器将从网页接收的 key/value 对的键。如今,人们依赖 Web API 调用和 AJAX 调用,但它们仍在使用。
作用:这个对屏幕阅读器很有用,辅助。当 HTML 元素的原始标记元素 未在页面 中描述它们的真实语义时,您应该将角色放在 HTML 元素上。一个常见的例子是人们使用 div
元素来构建 tables。在这种情况下,您需要为构成 table 的各个 div 元素添加 table、网格、行、单元格等角色。如果您使用构建 table 的原生 HTML 元素(、 、 等),角色将是多余的。
aria-xxxx:也用于屏幕阅读器和辅助技术。由于多种原因,使用了多种类型的 aria 属性。网络上不乏参考资料;你可以很容易地在 MDN 或其他网站上搜索它们。我在这里要注意的是,某些属性使它们变得多余。
- 让我们以上面的代码段为例。
<input required aria-required="true" />
。 required 属性是在 HTML 5 中引入的,对于屏幕阅读器来说已经足够了。因此,如果您的目标是现代浏览器(很有可能),则添加 aria-required
是多余的。但是,如果您的目标浏览器不支持 HTML 5,那么拥有它会很有用,因为这些浏览器会忽略 required
属性。
- 从您的代码片段中获取的另一个示例展示了相同的观点,即
aria-labelledBy
在这里也是多余的。这是因为借助 for
属性,您已经拥有由 <label>
元素标记的输入。简而言之,如果原生 HTML 元素和属性还不够,aria 属性很有用。
总而言之,每个属性都有其不同的用途。并非所有这些都需要始终存在,这取决于您的代码结构、您使用的 HTML 元素、您定位的浏览器等。
希望对您有所帮助! :)
我知道 name 和 id 在将它们包含到 Web 表单元素中时具有关键重要性,所有这些属性,如 name、id、role、aria-xxx、title,都应始终包含在 html元素?
那么,每篇文章、每个部分、每个导航菜单项都必须具有所有这些属性吗?或者其中一些将与某些元素相关,例如 "name" 用于网络表单或 "id" 用于 javascript 定位?不幸的是,如果某些属性不受支持或不需要,浏览器不会 return 向我发送验证消息。请指点。
在表格中可以吗?
<label for=”first-name”>First Name</label>
<input type=”text” id=”first-name” name=”first-name” required aria-required=”true” role="textbox" aria-labelledBy="something">
如您所见,我将 required AND aria-required 和角色放在一起,可能会发生冲突吗?我知道 role attribute=textbox 不是正确的,只是为了说明我的疑问。提前致谢。
这是个好问题。 TLDR 是不,您不必为所有 HTML 元素添加所有这些属性。更详细的解释,请查看以下文字。
您提到的每个属性都扮演着不同的角色。以你说的那几个为例:
id:用来给元素一个唯一的标识符。对于使用 JavaScript
getElementById
进行引用很有用,对于在同一页面中使用其他属性进行引用也很有用(例如<label for="first-name">
如何通过 id 引用输入元素)。name:主要用于读取表单元素的数据。在通过传统的 POST 调用服务器发布表单的某个时间点,
name
属性将表示服务器将从网页接收的 key/value 对的键。如今,人们依赖 Web API 调用和 AJAX 调用,但它们仍在使用。作用:这个对屏幕阅读器很有用,辅助。当 HTML 元素的原始标记元素 未在页面 中描述它们的真实语义时,您应该将角色放在 HTML 元素上。一个常见的例子是人们使用
div
元素来构建 tables。在这种情况下,您需要为构成 table 的各个 div 元素添加 table、网格、行、单元格等角色。如果您使用构建 table 的原生 HTML 元素(、 、 等),角色将是多余的。aria-xxxx:也用于屏幕阅读器和辅助技术。由于多种原因,使用了多种类型的 aria 属性。网络上不乏参考资料;你可以很容易地在 MDN 或其他网站上搜索它们。我在这里要注意的是,某些属性使它们变得多余。
- 让我们以上面的代码段为例。
<input required aria-required="true" />
。 required 属性是在 HTML 5 中引入的,对于屏幕阅读器来说已经足够了。因此,如果您的目标是现代浏览器(很有可能),则添加aria-required
是多余的。但是,如果您的目标浏览器不支持 HTML 5,那么拥有它会很有用,因为这些浏览器会忽略required
属性。 - 从您的代码片段中获取的另一个示例展示了相同的观点,即
aria-labelledBy
在这里也是多余的。这是因为借助for
属性,您已经拥有由<label>
元素标记的输入。简而言之,如果原生 HTML 元素和属性还不够,aria 属性很有用。
- 让我们以上面的代码段为例。
总而言之,每个属性都有其不同的用途。并非所有这些都需要始终存在,这取决于您的代码结构、您使用的 HTML 元素、您定位的浏览器等。
希望对您有所帮助! :)