以下是一份 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' ) { console. log ( '点击了列表项:' , e. target. textContent) ; }
} ) ;
四、兼容性与最佳实践
优先使用 addEventListener
:避免 onclick
等行内事件属性的覆盖问题。移动端适配 :使用 touchstart
、touchend
替代部分鼠标事件。语义化标签 :优先使用 <button>
而非 <div>
模拟按钮,提升可访问性。属性验证 :对用户输入使用 required
和 pattern
进行前端 验证。
资源推荐 :
MDN Web 文档 - HTML 属性 JavaScript 事件参考
掌握这些事件和属性,你将能更高效地开发交互丰富的 Web 应用! 🚀
📚 推荐阅读
无限畅用Cursor 编辑器,四步轻松搞定! 历时两周半开发的一款加载live2模型的浏览器插件 github优秀开源作品集