HTML属性详解

HTML属性详解

一、全局属性(所有 HTML 标签都支持,最常用)

所有元素通用,是写 HTML 每天都会用到的基础。

表格

属性作用示例注意事项
id元素唯一标识符<div id="user-card-1001">页面内绝对不能重复;不能以数字开头;JS/CSS 精准选择用
class元素类名,用于 CSS 样式和批量选择<div class="card vip-user">可重复;多个类名用空格分隔;优先用 class 写样式
style内联样式<div style="color: red; font-size: 16px;">优先级最高;只用于临时单个样式,不要写大量样式
title鼠标悬停时显示的提示文本<a href="#" title="点击查看详情">详情</a>支持换行(&#10;);不要放重要信息
data-*自定义数据属性(W3C 标准)<div data-user-id="1001" data-is-vip="true">短横线转驼峰读取(dataset.userId);值全是字符串;配合 PHP 传数据神器
lang元素内容的语言<html lang="zh-CN">影响浏览器翻译、屏幕阅读器;建议在<html>标签全局设置
dir文本方向<div dir="rtl">阿拉伯文</div>可选值:ltr(从左到右,默认)、rtl(从右到左)
hidden隐藏元素<div hidden>我被隐藏了</div>等价于 CSS display: none;元素仍在 DOM 中,JS 可操作
tabindexTab 键切换焦点的顺序<input tabindex="1">0:默认顺序;-1:不可通过 Tab 聚焦;正数:按数字顺序
contenteditable元素内容是否可编辑<div contenteditable="true">可编辑文本</div>常用值:true/false;编辑后内容需要 JS 手动获取
draggable元素是否可拖拽<div draggable="true">拖拽我</div>配合 JS 拖拽事件使用
spellcheck是否开启拼写检查<textarea spellcheck="false"></textarea>对输入框、文本域生效;默认开启
translate是否允许浏览器翻译<div translate="no">品牌名</div>保护专有名词不被翻译

二、常用标签专属属性(90% 开发场景只用到这些)

按标签分类,只列每个标签最核心、最常用的属性。

1. 链接 <a>

表格

属性作用示例
href链接目标地址<a href="https://wuxuanchen.top">我的博客</a>空链接写href="#"(不要写href=""
target链接打开方式<a href="#" target="_blank">新窗口打开</a>常用值:_self(当前页,默认)、_blank(新窗口)
rel链接与当前页的关系<a href="#" rel="noopener noreferrer">安全链接</a>新窗口打开必须加rel="noopener noreferrer",防止安全漏洞
download下载文件而不是打开<a href="file.pdf" download="文档.pdf">下载</a>只能下载同域名下的文件

2. 图片 <img>

表格

属性作用示例
src图片地址<img src="avatar.jpg">必须属性
alt图片加载失败时的替代文本<img src="avatar.jpg" alt="用户头像">必须写!影响 SEO 和无障碍
width/height图片宽高<img src="avatar.jpg" width="100" height="100">单位是像素;建议用 CSS 控制,避免拉伸
loading懒加载<img src="avatar.jpg" loading="lazy">浏览器原生懒加载,页面滚动到可见区域才加载

3. 表单 <form>(PHP 后端最常用)

表格

属性作用示例
action表单提交地址<form action="submit.php" method="post">不写默认提交到当前页
method提交方式<form method="post">常用值:get(参数在 URL)、post(参数在请求体,推荐)
enctype表单数据编码方式<form enctype="multipart/form-data">上传文件时必须写这个值
target提交结果打开方式<form target="_blank"><a>标签的target

4. 输入框 <input>(表单核心)

表格

属性作用适用 type
type输入框类型所有;常用值:text/password/email/number/checkbox/radio/file/submit/button
name表单字段名(PHP 接收用)所有;PHP 通过$_POST['name']获取值
value输入框默认值所有;单选 / 复选框必须写 value
placeholder输入提示文本text/password/email/textarea
required必填验证所有输入框;浏览器原生验证
disabled禁用输入框所有;禁用后值不会被提交
readonly只读输入框所有;只读但值被提交
checked默认选中checkbox/radio
maxlength最大输入长度text/password/textarea
min/max数值范围number/date
step数值步长numberstep="0.01"表示保留两位小数

5. 其他表单元素

  • <select> 下拉框:namemultiple(多选)、disabled
  • <option> 选项:value(提交的值)、selected(默认选中)
  • <textarea> 文本域:namerows(行数)、cols(列数)、placeholder
  • <button> 按钮:typebutton/submit/reset,默认是submit!)、disabled

6. 媒体标签

  • <video> 视频:srccontrols(显示控制条)、autoplay(自动播放,需静音)、loop(循环)、muted(静音)、poster(封面图)
  • “ 音频:同<video>,没有poster属性

7. 表格标签

  • <td>/<th> 单元格:colspan(跨列)、rowspan(跨行)
  • 注意:bordercellpaddingcellspacing已废弃,全部用 CSS 控制

三、事件属性(基础交互用,复杂交互用 JS 绑定)

事件属性用于在 HTML 中直接绑定 JS 代码,简单场景可用,复杂项目建议用 JS 统一绑定。

常用鼠标事件

  • onclick:点击事件
  • ondblclick:双击事件
  • onmouseover:鼠标移入
  • onmouseout:鼠标移出
  • onmousedown:鼠标按下
  • onmouseup:鼠标松开

常用键盘事件

  • onkeydown:键盘按下
  • onkeyup:键盘松开
  • onkeypress:按键按下并松开(不推荐,已废弃)

常用表单事件

  • onchange:值改变并失去焦点时触发
  • oninput:值实时改变时触发
  • onsubmit:表单提交时触发
  • onfocus:获得焦点
  • onblur:失去焦点

常用文档 / 窗口事件

  • onload:页面加载完成后触发
  • onscroll:页面滚动时触发
  • onresize:窗口大小改变时触发

示例:

html

<button onclick="alert('点击了按钮')">点击我</button>
<input type="text" oninput="console.log(this.value)">

四、特殊属性

1. 布尔属性

只要属性存在就表示true,不需要写值,写值也不影响结果。

html

<!-- 正确写法 -->
<input disabled>
<input checked>
<div hidden>

<!-- 也可以这么写,但没必要 -->
<input disabled="disabled">
<input checked="true">

2. ARIA 无障碍属性

用于提升屏幕阅读器的可访问性,现代网站建议添加。

  • role:定义元素的角色,如role="button"role="alert"
  • aria-label:元素的描述文本,如<button aria-label="关闭弹窗">×</button>
  • aria-hidden="true":隐藏元素,不让屏幕阅读器读取

五、常见坑与最佳实践

  1. 所有属性值建议用双引号包裹,特殊字符必须用引号
  2. dataset取出来的值全是字符串,数字 / 布尔值需要手动转换
  3. 不要用内联style写大量样式,优先用class
  4. id不能重复class可以重复
  5. 新窗口打开链接必须加rel="noopener noreferrer",防止安全漏洞
  6. 上传文件时,<form>必须加enctype="multipart/form-data"
  7. <button>默认是submit类型,放在表单里会自动提交,需要手动指定type="button"