DOM 事件 & HTML 标签属性速查手册

以下是一份 DOM 事件 & HTML 标签属性速查手册,涵盖常用场景和示例,助你快速查阅和使用:

一、DOM 事件速查表

1. 鼠标事件

事件名 触发时机 适用元素 示例代码
click 元素被点击 任意可见元素 button.addEventListener('click', () => { ... })
dblclick 元素被双击 任意可见元素 div.addEventListener('dblclick', handleDoubleClick)
mouseover 鼠标移入元素 任意可见元素 img.onmouseover = () => { ... }
mouseout 鼠标移出元素 任意可见元素 div.addEventListener('mouseout', logExit)
mousemove 鼠标在元素内移动 任意可见元素 canvas.onmousemove = trackPosition
contextmenu 右键点击元素(弹出菜单前) 任意元素 document.oncontextmenu = blockDefaultMenu

2. 键盘事件

事件名 触发时机 适用元素 示例代码
keydown 键盘按键按下时 可聚焦元素(如 input) input.addEventListener('keydown', (e) => { if (e.key === 'Enter') submit() })
keyup 键盘按键释放时 可聚焦元素 input.onkeyup = validateInput
keypress 按键按下并产生字符时(已弃用,建议用 keydown 可聚焦元素 -

3. 表单事件

事件名 触发时机 适用元素 示例代码
submit 表单提交时 <form> form.onsubmit = (e) => { e.preventDefault(); ... }
change 表单元素值改变并失焦后 input, select, textarea select.addEventListener('change', updateOptions)
input 表单元素值实时改变时 input, textarea input.oninput = debounce(search, 300)
focus 元素获得焦点时 可聚焦元素 input.onfocus = showTooltip
blur 元素失去焦点时 可聚焦元素 input.onblur = validateField

4. 窗口/文档事件

事件名 触发时机 适用元素 示例代码
load 资源(如图片、页面)加载完成 window, img, iframe window.onload = initApp;
resize 窗口大小改变时 window window.addEventListener('resize', handleResize)
scroll 元素滚动时 可滚动元素 div.onscroll = throttle(checkPosition, 100)

5. 其他事件

事件名 触发时机 适用元素 示例代码
DOMContentLoaded HTML 解析完成(DOM 树就绪,无需等待资源) document document.addEventListener('DOMContentLoaded', init)
transitionend CSS 过渡动画完成 任意元素 div.ontransitionend = removeElement
animationend CSS 动画完成 任意元素 box.onanimationend = () => { ... }

二、HTML 标签属性速查表

1. 全局属性(所有标签可用)

属性名 说明 示例
id 唯一标识元素 <div id="header"></div>
class 为元素指定 CSS 类名 <p class="text-red"></p>
style 行内 CSS 样式 <div style="color: red;"></div>
title 悬停提示文本 <a href="#" title="返回顶部">↑</a>
data-* 存储自定义数据 <div data-user-id="123"></div>
contenteditable 允许元素内容可编辑 <div contenteditable="true"></div>

2. 表单相关属性

属性名 说明 适用标签 示例
type 输入类型(text, email, password 等) <input> <input type="email">
required 表单提交前必须填写 input, select, textarea <input required>
disabled 禁用表单元素 input, button <button disabled>提交</button>
placeholder 输入框提示文本 input, textarea <input placeholder="请输入姓名">
min/max 数值/时间输入的最小/最大值 input[type=number, date] <input type="number" min="1" max="10">
pattern 输入内容的正则表达式验证 input[type=text] <input pattern="\d{3}-\d{4}">

3. 链接与媒体属性

属性名 说明 适用标签 示例
href 链接目标 URL <a>, <link> <a href="https://example.com">链接</a>
target 打开链接的方式(如 _blank 新窗口) <a> <a target="_blank">新窗口打开</a>
src 资源路径(图片、脚本、视频) img, script, video <img src="logo.png">
alt 图片无法显示时的替代文本 <img> <img src="cat.jpg" alt="猫咪图片">
controls 显示媒体控件(播放/暂停等) video, audio <video controls></video>
autoplay 媒体加载后自动播放 video, audio <audio autoplay></audio>

4. 元信息与 SEO 属性

属性名 说明 适用标签 示例
charset 文档字符编码 <meta> <meta charset="UTF-8">
name 定义元数据名称(如关键词、描述) <meta> <meta name="description" content="页面描述">
property Open Graph 协议(社交媒体优化) <meta> <meta property="og:title" content="标题">
rel 定义链接与文档的关系 <link>, <a> <link rel="stylesheet" href="style.css">

三、事件处理技巧

1. 阻止默认行为

javascript 复制代码
element.addEventListener('click', (e) => {
  e.preventDefault(); // 阻止链接跳转/表单提交
});

2. 阻止事件冒泡

javascript 复制代码
button.onclick = (e) => {
  e.stopPropagation(); // 阻止事件向上传播
};

3. 事件委托

javascript 复制代码
document.getElementById('list').addEventListener('click', (e) => {
  if (e.target.tagName === 'LI') { // 只处理 li 元素点击
    console.log('点击了列表项:', e.target.textContent);
  }
});

四、兼容性与最佳实践

  1. 优先使用 addEventListener :避免 onclick 等行内事件属性的覆盖问题。
  2. 移动端适配 :使用 touchstarttouchend 替代部分鼠标事件。
  3. 语义化标签 :优先使用 <button> 而非 <div> 模拟按钮,提升可访问性。
  4. 属性验证 :对用户输入使用 requiredpattern 进行前端验证。

资源推荐

掌握这些事件和属性,你将能更高效地开发交互丰富的 Web 应用! 🚀

📚 推荐阅读

相关推荐
只会写Bug的程序员29 分钟前
面试之《网络请求的资源如何强制不缓存》
前端·网络·缓存·面试
Wanna71542 分钟前
HTML——前端基础1
前端·css·html
要好好养胃1 小时前
1-7makefile
linux·服务器·前端
白白糖1 小时前
Day 52 卡玛笔记
python·算法·力扣
MYX_3091 小时前
Python 编程题 第四节:斐波那契数列、列表的复制、暂停后输出、成绩评级、统计字符
开发语言·python·学习
码界筑梦坊1 小时前
基于Flask的红袖网小说数据可视化分析系统
python·信息可视化·数据挖掘·数据分析·flask·毕业设计
Ven%1 小时前
dify接入语音转文本模型后报错: microphone not authorized
人工智能·python·docker·dify
花果山-马大帅1 小时前
机器学习之集成学习思维导图
人工智能·python·机器学习·集成学习
轨迹H1 小时前
Jsmoke-一款强大的js检测工具,浏览器部署即用,使用方便且高效
前端·javascript·web安全·网络安全·渗透测试
东方巴黎~Sunsiny2 小时前
FastExcel vs EasyExcel vs Apache POI:三者的全面对比分析
java·开发语言·python·apache