跳转至

HTML 属性

属性写在元素的开始标签中,用来补充地址、语言、标识、状态等信息。本页讲解通用规则和判断方法, 不是完整属性参考;使用具体元素时仍应确认该属性是否适用。

学习目标

  • 掌握属性名称、值和引号的基本语法。
  • 区分全局属性、元素专用属性与布尔属性。
  • 避免在属性中引入无效结构、隐私泄露或脚本风险。

核心概念

一个元素可以具有多个属性,属性之间用空白分隔:

<a class="next-step" href="headings.md" hreflang="zh-CN">
  学习 HTML 标题
</a>

这里 class、href 和 hreflang 都是属性。HTML 属性名通常不区分 ASCII 大小写, 但统一使用小写更容易阅读;属性值建议始终使用双引号或团队约定的引号风格。

全局与专用属性

id、class、lang、title、hidden 和 data-* 等可用于许多元素,称为全局属性。 href 主要用于链接类元素,src 用于部分外部资源元素。属性是否合法取决于元素和规范上下文。

<section id="requirements" lang="zh-CN">
  <h2>环境要求</h2>
</section>

同一文档中的 id 应唯一。class 可以在多个元素间复用,并可包含多个以空白分隔的类名。

布尔属性

布尔属性只要出现就表示真,字符串内容不会把它变成假:

<button type="button" disabled>暂不可用</button>

disabled="false" 仍然表示禁用。要表示假,应移除该属性。不要把这一规则随意套用到 aria-* 属性;ARIA 属性通常有自己的字符串取值规则。

自定义数据

data-* 适合保存与页面元素相关、供脚本读取的非敏感数据:

<article data-category="html" data-level="beginner">
  <h2>属性练习</h2>
</article>

这些值会暴露给访问者,不能保存密码、访问令牌或授权判断。样式优先使用语义化类名, 不要把大量业务数据塞进 HTML 属性。

安全实践

不可信数据进入属性值时必须按属性上下文编码;URL 属性还应解析并限制允许协议。 避免内联事件属性,如 onclick,使用独立脚本和 addEventListener 更利于维护与内容安全策略。

常见错误

  • 重复使用同一个 id,导致片段导航和标签关联含糊。
  • 写 disabled="false" 并期待控件恢复可用。
  • 把任意用户字符串直接插入 href、src 或 style。
  • 误以为 title 属性可以替代可见标签或可靠的移动端提示。
  • 给元素添加规范不支持的属性并期待浏览器提供功能。

相关链接