HTML标签属性

属性概述

HTML属性为元素提供附加信息,它们总是写在开始标签中,以"名称/值"对的形式出现。

东巴文(db-w.cn) 认为:属性就像元素的"身份证",它们描述了元素的特征和行为。

属性基本语法

基本格式

<标签名 属性名="属性值">内容</标签名>

示例

<!-- 单个属性 -->
<a href="https://db-w.cn">东巴文</a>

<!-- 多个属性 -->
<img src="image.jpg" alt="示例图片" width="300" height="200">

<!-- 布尔属性 -->
<input type="text" disabled>

东巴文说明

  • 属性名不区分大小写,但推荐使用小写
  • 属性值必须用引号包围,推荐使用双引号
  • 多个属性之间用空格分隔

全局属性

全局属性是所有HTML元素都可以使用的属性。

id属性

id属性为元素指定唯一的标识符。

<div id="header">页头</div>
<p id="intro">介绍段落</p>

东巴文规则

  • ✅ 每个页面中id值必须唯一
  • ✅ 用于CSS样式、JavaScript操作、锚点链接
  • ⚠️ 避免使用特殊字符和空格

使用场景

<!-- CSS样式 -->
<style>
    #header {
        background-color: #f0f0f0;
    }
</style>

<!-- JavaScript操作 -->
<script>
    const header = document.getElementById('header');
</script>

<!-- 锚点链接 -->
<a href="#intro">跳转到介绍</a>

class属性

class属性为元素指定一个或多个类名。

<!-- 单个类名 -->
<div class="container">容器</div>

<!-- 多个类名 -->
<div class="container main-content">主内容</div>

东巴文说明

  • ✅ 一个页面中可以有多个相同类名
  • ✅ 一个元素可以有多个类名(用空格分隔)
  • ✅ 用于CSS样式和JavaScript选择器

使用场景

<style>
    .container {
        max-width: 1200px;
        margin: 0 auto;
    }
    
    .main-content {
        padding: 20px;
    }
</style>

<script>
    const containers = document.getElementsByClassName('container');
    const mainContent = document.querySelector('.main-content');
</script>

style属性

style属性用于添加内联CSS样式。

<div style="color: red; font-size: 16px;">
    这是红色文本
</div>

东巴文建议

  • ⚠️ 尽量避免使用内联样式
  • ✅ 优先使用外部样式表或内部样式
  • ✅ 仅在动态样式或快速测试时使用

title属性

title属性提供元素的额外信息,鼠标悬停时显示提示文本。

<a href="https://db-w.cn" title="东巴文官网">东巴文</a>
<abbr title="HyperText Markup Language">HTML</abbr>

lang属性

lang属性指定元素内容的语言。

<html lang="zh-CN">
    <body>
        <p lang="zh-CN">这是中文</p>
        <p lang="en">This is English</p>
        <p lang="ja">これは日本語です</p>
    </body>
</html>

东巴文说明

  • ✅ 提升可访问性
  • ✅ 帮助搜索引擎理解内容
  • ✅ 浏览器拼写检查

dir属性

dir属性指定元素中文本的方向。

<p dir="ltr">从左到右(Left to Right)</p>
<p dir="rtl">从右到左(Right to Left)</p>
<p dir="auto">自动检测</p>

东巴文说明

  • ltr:从左到右(默认)
  • rtl:从右到左(阿拉伯语、希伯来语等)
  • auto:浏览器自动检测

hidden属性

hidden属性隐藏元素。

<div hidden>这个元素被隐藏了</div>
<div hidden="hidden">这个元素也被隐藏了</div>

东巴文说明

  • ✅ 相当于display: none
  • ✅ 布尔属性,存在即为true
  • ⚠️ 不要用于隐藏敏感信息(在源码中可见)

tabindex属性

tabindex属性指定元素的Tab键顺序。

<input type="text" tabindex="1">
<input type="text" tabindex="2">
<input type="text" tabindex="3">

东巴文说明

  • 正数:按Tab键顺序访问
  • 0:最后访问
  • -1:不能通过Tab键访问,但可以用JavaScript聚焦

accesskey属性

accesskey属性为元素指定快捷键。

<a href="https://db-w.cn" accesskey="d">东巴文(Alt+D)</a>
<button accesskey="s">保存(Alt+S)</button>

东巴文说明

  • 不同浏览器的快捷键组合不同
  • Chrome/Firefox:Alt + 快捷键
  • Mac:Control + Option + 快捷键

data-*属性

data-*属性用于存储自定义数据。

<div 
    id="user" 
    data-id="123" 
    data-name="张三" 
    data-age="25"
    data-role="admin">
    用户信息
</div>

使用JavaScript访问

const user = document.getElementById('user');

// 读取数据
console.log(user.dataset.id);    // "123"
console.log(user.dataset.name);  // "张三"
console.log(user.dataset.age);   // "25"
console.log(user.dataset.role);  // "admin"

// 修改数据
user.dataset.age = "26";

// 删除数据
delete user.dataset.role;

东巴文应用场景

  • 存储与元素相关的数据
  • 在JavaScript中访问和操作数据
  • 实现动态功能

contenteditable属性

contenteditable属性指定元素内容是否可编辑。

<div contenteditable="true">这段文字可以编辑</div>
<div contenteditable="false">这段文字不可编辑</div>
<div contenteditable>这段文字也可以编辑</div>

东巴文说明

  • true或空字符串:可编辑
  • false:不可编辑
  • 继承父元素的设置

draggable属性

draggable属性指定元素是否可拖动。

<div draggable="true">这个元素可以拖动</div>
<div draggable="false">这个元素不可拖动</div>
<div draggable>这个元素也可以拖动</div>

spellcheck属性

spellcheck属性指定是否对元素内容进行拼写检查。

<textarea spellcheck="true">拼写检查开启</textarea>
<textarea spellcheck="false">拼写检查关闭</textarea>

特定属性

除了全局属性,每个HTML元素还有自己特有的属性。

链接属性

<a 
    href="https://db-w.cn" 
    target="_blank" 
    rel="noopener noreferrer"
    download="filename.html"
    hreflang="zh-CN"
    type="text/html">
    东巴文
</a>

东巴文说明

属性 说明
href 链接地址 URL
target 打开方式 _blank, _self, _parent, _top
rel 关系 nofollow, noopener, noreferrer
download 下载文件名 文件名
hreflang 链接文档语言 语言代码
type MIME类型 MIME类型

图片属性

<img 
    src="image.jpg" 
    alt="示例图片" 
    width="300" 
    height="200"
    loading="lazy"
    decoding="async">

东巴文说明

属性 说明 东巴文建议
src 图片路径 ✅ 必需
alt 替代文本 ✅ 必需,提升可访问性
width 宽度 ✅ 避免布局偏移
height 高度 ✅ 避免布局偏移
loading 加载方式 lazy(懒加载)、eager(立即加载)
decoding 解码方式 async(异步)、sync(同步)、auto

表单属性

<form 
    action="submit.php" 
    method="POST" 
    enctype="multipart/form-data"
    target="_blank"
    autocomplete="on"
    novalidate>
    <!-- 表单控件 -->
</form>

东巴文说明

属性 说明
action 提交地址 URL
method 提交方式 GET、POST
enctype 编码类型 application/x-www-form-urlencoded、multipart/form-data、text/plain
target 提交目标 _blank、_self、_parent、_top
autocomplete 自动完成 on、off
novalidate 不验证 布尔属性

输入框属性

<input 
    type="text" 
    name="username" 
    value="张三"
    placeholder="请输入用户名"
    required
    disabled
    readonly
    maxlength="20"
    minlength="3"
    pattern="[A-Za-z]{3,}"
    autocomplete="username"
    autofocus>

东巴文说明

属性 说明 东巴文建议
type 输入类型 text、password、email、number等
name 名称 ✅ 表单提交时必需
value 默认值 初始值
placeholder 占位符 提示文本
required 必填 布尔属性
disabled 禁用 布尔属性
readonly 只读 布尔属性
maxlength 最大长度 字符数
minlength 最小长度 字符数
pattern 正则验证 正则表达式
autocomplete 自动完成 on、off或特定值
autofocus 自动聚焦 布尔属性

视频属性

<video 
    src="video.mp4" 
    controls 
    autoplay 
    muted 
    loop 
    poster="poster.jpg"
    width="640" 
    height="360"
    preload="metadata">
    您的浏览器不支持视频标签
</video>

东巴文说明

属性 说明 东巴文建议
src 视频路径 URL
controls 显示控件 布尔属性
autoplay 自动播放 需配合muted
muted 静音 布尔属性
loop 循环播放 布尔属性
poster 封面图 URL
width 宽度 像素值
height 高度 像素值
preload 预加载 none、metadata、auto

布尔属性

布尔属性只有两种状态:存在(true)或不存在(false)。

常见布尔属性

<!-- disabled:禁用 -->
<input type="text" disabled>
<button disabled>禁用按钮</button>

<!-- checked:选中 -->
<input type="checkbox" checked>
<input type="radio" checked>

<!-- selected:选中 -->
<option selected>选中项</option>

<!-- readonly:只读 -->
<input type="text" readonly>

<!-- required:必填 -->
<input type="text" required>

<!-- multiple:多选 -->
<input type="file" multiple>
<select multiple></select>

<!-- autofocus:自动聚焦 -->
<input type="text" autofocus>

<!-- autoplay:自动播放 -->
<video autoplay></video>

<!-- controls:显示控件 -->
<video controls></video>

<!-- loop:循环 -->
<video loop></video>

<!-- muted:静音 -->
<video muted></video>

东巴文说明

  • 布尔属性不需要值,存在即为true
  • 可以写成disabled="disabled",但推荐简写为disabled
  • 不存在即为false

属性最佳实践

东巴文属性法则

法则1:属性值必须加引号

<!-- ✅ 推荐 -->
<div class="container" id="main"></div>

<!-- ❌ 不推荐 -->
<div class=container id=main></div>

法则2:使用小写属性名

<!-- ✅ 推荐 -->
<div class="container"></div>

<!-- ❌ 不推荐 -->
<div CLASS="container"></div>

法则3:合理使用id和class

<!-- ✅ 推荐:id唯一,class可重复 -->
<div id="header" class="section"></div>
<div id="main" class="section"></div>
<div id="footer" class="section"></div>

<!-- ❌ 不推荐:id重复 -->
<div id="section" class="header"></div>
<div id="section" class="main"></div>

法则4:使用语义化属性

<!-- ✅ 推荐:使用合适的属性 -->
<img src="image.jpg" alt="图片描述">
<a href="https://db-w.cn" title="东巴文官网">东巴文</a>

<!-- ❌ 不推荐:缺少必要属性 -->
<img src="image.jpg">
<a href="https://db-w.cn">东巴文</a>

法则5:避免内联样式

<!-- ❌ 不推荐:内联样式 -->
<div style="color: red; font-size: 16px;">内容</div>

<!-- ✅ 推荐:使用class -->
<div class="highlight">内容</div>
.highlight {
    color: red;
    font-size: 16px;
}

法则6:使用data-*存储数据

<!-- ✅ 推荐 -->
<div id="user" data-id="123" data-name="张三">用户信息</div>

<!-- ❌ 不推荐:使用自定义属性 -->
<div id="user" id="123" name="张三">用户信息</div>

常见问题

问题1:id和class有什么区别?

东巴文对比

对比项 id class
唯一性 页面中唯一 页面中可重复
数量 一个元素只能有一个id 一个元素可以有多个class
CSS选择器 #id .class
JavaScript getElementById() getElementsByClassName()
使用场景 唯一标识、锚点 样式、分组

问题2:属性值用单引号还是双引号?

东巴文建议:推荐使用双引号,但单引号也是合法的。

<!-- ✅ 推荐:双引号 -->
<div class="container"></div>

<!-- ✅ 也可以:单引号 -->
<div class='container'></div>

<!-- ✅ 特殊情况:属性值包含引号 -->
<div title='这是"东巴文"的示例'></div>
<div title="这是'东巴文'的示例"></div>

问题3:如何选择合适的属性?

东巴文建议

  1. 根据元素类型选择特定属性
  2. 使用全局属性提供额外信息
  3. 遵循HTML规范和最佳实践
  4. 考虑可访问性和SEO

学习检验

知识点测试

问题1:以下哪个属性是布尔属性?

A. class B. id C. disabled D. title

<details> <summary>点击查看答案</summary>

答案:C

东巴文解释disabled是布尔属性,存在即为true,不需要值。其他属性都需要指定值。

</details>

问题2:以下哪个属性用于存储自定义数据?

A. data-id B. custom-id C. my-id D. user-id

<details> <summary>点击查看答案</summary>

答案:A

东巴文解释:HTML5规定自定义数据属性必须以data-开头,其他选项不符合规范。

</details>

实践任务

任务:创建一个包含以下属性的元素:

  1. id属性
  2. class属性(多个类名)
  3. data-*属性
  4. title属性
  5. style属性
<details> <summary>点击查看参考答案</summary>
<div 
    id="user-profile" 
    class="card user-card active"
    data-user-id="123"
    data-user-name="张三"
    data-user-role="admin"
    title="用户信息卡片"
    style="background-color: #f0f0f0; padding: 20px; border-radius: 8px;">
    <h2>张三</h2>
    <p>管理员</p>
</div>

<script>
    const card = document.getElementById('user-profile');
    console.log(card.dataset.userId);    // "123"
    console.log(card.dataset.userName);  // "张三"
    console.log(card.dataset.userRole);  // "admin"
</script>
</details>

东巴文(db-w.cn) - 让编程学习更有趣、更高效!