HTML: HTML 全局属性参考

全局属性是可用于所有HTML标签的属性。它们定义了元素的标识、样式、行为、语言以及交互方式。

1. 什么是全局属性

全局属性是 HTML 规范中定义的通用属性,可以应用于任何 HTML 元素(包括 <html><head><body> 等根元素)。它们提供了跨所有标签一致的语义和行为控制能力。理解并熟练使用全局属性,是写出语义化、可访问、可维护 HTML 的关键。


2. 最常用的全局属性

以下四个全局属性在日常开发中使用频率最高:

▶ 示例

HTML
<!-- id 唯一标识 -->
<div id="header">网站头部</div>

<!-- class 类名 -->
<p class="highlight important">这段文字同时应用 highlight 和 important 样式</p>

<!-- style 内联样式 -->
<span style="color: red; font-weight: bold;">红色加粗文字</span>

<!-- title 悬停提示 -->
<abbr title="HyperText Markup Language">HTML</abbr> 是网页标记语言。
▶ 试一试

3. 语言与方向

这两个属性关乎页面内容的语言声明和阅读方向,对 SEO 和可访问性非常重要:

▶ 示例

HTML
<!-- 声明页面主要语言为简体中文 -->
<html lang="zh-CN">

<!-- 正文使用英文 -->
<p lang="en">Welcome to our website!</p>

<!-- 从右到左的阿拉伯文字 -->
<p dir="rtl" lang="ar">مرحبا بالعالم</p>
▶ 试一试
ℹ️ 提示: lang 属性对 SEO(搜索引擎能准确识别内容语言)和屏幕阅读器(选择正确的语音合成引擎)至关重要。养成在 <html> 标签上设置 lang 的好习惯。


4. 数据属性 data-*

data-* 属性允许你在 HTML 元素上存储自定义数据,JavaScript 通过 dataset API 读取。注意 * 必须是小写字母开头且不含大写字母:

HTML
<!-- 使用 data-* 存储商品信息 -->
<div class="product" data-id="1001" data-name="无线鼠标" data-price="99.00" data-stock="true">
  <h3>无线鼠标</h3>
  <p>价格:¥99.00</p>
  <button onclick="addToCart(this)">加入购物车</button>
</div>

<script>
  function addToCart(btn) {
    const product = btn.closest('.product');
    const id = product.dataset.id;
    const name = product.dataset.name;
    const price = product.dataset.price;
    console.log('添加到购物车:', id, name, price);
    alert(`已添加「${name}」到购物车,价格:¥${price}`);
  }
</script>

5. 交互相关属性

这些属性控制元素的可视性、聚焦顺序和编辑行为:

▶ 示例

HTML
<!-- hidden 隐藏不可见信息 -->
<div hidden>这条消息用户看不到</div>

<!-- tabindex 控制聚焦顺序 -->
<input type="text" tabindex="2" placeholder="第二个聚焦">
<input type="text" tabindex="1" placeholder="第一个聚焦">

<!-- contenteditable 实现页面内编辑 -->
<div contenteditable="true" style="border:1px solid #ccc; padding:10px; border-radius:4px;">
  这段文字可以直接在浏览器中编辑!
</div>

<!-- spellcheck 拼写检查 -->
<textarea spellcheck="true" placeholder="输入英文会检查拼写"></textarea>
▶ 试一试

6. 其他全局属性

以下是更多有用的全局属性:

属性 说明 示例
accesskey 快捷键组合,激活或聚焦元素 accesskey="s"(按 Alt+S 聚焦)
draggable 元素是否可拖拽,配合 Drag & Drop API draggable="true"
autofocus 页面加载时自动聚焦(仅<input><textarea><button>等表单元素) autofocus
translate 控制元素内容是否可被翻译(yes / no translate="no"
slot 与 Web Component 的 <slot> 配合使用 slot="header"
is 指定自定义内置元素(Customized Built-in Element) is="x-foo"
itemscope / itemprop / itemtype 微数据(Microdata),用于结构化数据标记 itemscope itemtype="https://schema.org/Product"

❓ 常见问题

Q idclass有什么区别?什么时候用哪个?
A id是"身份证号",一个页面中只能有一个元素使用某个id值,具有唯一性;class是"班级名",多个元素可以共享同一个class,具有复用性。实际开发中,90%的情况用class——因为样式复用是常态,而需要唯一标识的场景很少。id的优先级比class高(CSS选择器权重不同),但不要为了提高优先级而滥用id
Q data-*属性有什么用?怎么读取?
A data-*用于在HTML元素上存储自定义数据。例如:<div data-user-id="123" data-role="admin">。读取方式:JavaScript通过element.dataset.userId获取(自动将连字符转为驼峰命名)。常见用途:存储用户ID、商品信息、配置参数等。注意:data-*只适合存储展示相关的数据,敏感信息不要放在这里(查看源代码就能看到)。
Q contenteditable是做什么的?
A contenteditable="true"让元素的内容可以被用户直接编辑——点击后就能输入文字,就像一个富文本编辑器。常见用途:在线笔记、可编辑表格、即时评论。配合document.execCommand()可以实现加粗、斜体等编辑功能。注意:这只是前端效果,编辑后的内容不会自动保存到服务器,需要JavaScript配合提交。
Q hidden属性和display:none有什么区别?
A 两者都能隐藏元素,但有区别:1)hidden是HTML5标准属性,语义更明确,表示"这个元素暂时不应该被看到";2)display:none是CSS样式,只是视觉上隐藏;3)hidden的优先级比display:none高,即使设置了display:blockhidden元素仍然不可见。建议:用hidden控制元素的显隐状态,用display:none处理样式需求。

📖 小节

📝 作业

  1. 综合页面:创建一个产品展示卡片,使用 data-* 存储产品的 id、名称、价格、库存状态。点击按钮时弹出产品信息。至少包含 3 个产品卡片。
  2. Todo 编辑器:使用 contenteditable="true" 创建一个简单任务编辑区,并用 hidden 属性实现"显示/隐藏编辑面板"的效果。使用 tabindex 设置合理的 Tab 聚焦顺序。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏