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

devtools/2025/2/28 1:15:17/

以下是一份 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, textareaselect.addEventListener('change', updateOptions)
input表单元素值实时改变时input, textareainput.oninput = debounce(search, 300)
focus元素获得焦点时可聚焦元素input.onfocus = showTooltip
blur元素失去焦点时可聚焦元素input.onblur = validateField

4. 窗口/文档事件

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

5. 其他事件

事件名触发时机适用元素示例代码
DOMContentLoadedHTML 解析完成(DOM 树就绪,无需等待资源)documentdocument.addEventListener('DOMContentLoaded', init)
transitionendCSS 过渡动画完成任意元素div.ontransitionend = removeElement
animationendCSS 动画完成任意元素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="页面描述">
propertyOpen 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 进行前端验证。

资源推荐

  • MDN Web 文档 - HTML 属性
  • JavaScript 事件参考

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

📚 推荐阅读

  • 无限畅用Cursor 编辑器,四步轻松搞定!
  • 历时两周半开发的一款加载live2模型的浏览器插件
  • github优秀开源作品集

http://www.ppmy.cn/devtools/163213.html

相关文章

gradle学习-mac安装

1、首先保证本地安装了jdk17&#xff0c;配置好环境变量 export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH2、安装 Gradle 使用 Homebrew 安装 Gradle&#xff1a; brew install gradle3、验证安装 安装完成后…

浅谈HTTP及HTTPS协议

1.什么是HTTP&#xff1f; HTTP全称是超文本传输协议&#xff0c;是一种基于TCP协议的应用非常广泛的应用层协议。 1.1常见应用场景 一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。 2.HTTP请求详解 2.1请求报文格式 我们首先看一下…

Go语言--语法基础1--下载安装

2、下载安装 1、下载源码包&#xff1a; go1.18.4.linux-amd64.tar.gz。 官方地址&#xff1a;https://golang.google.cn/dl/ 云盘地址&#xff1a;链接&#xff1a; https://pan.baidu.com/s/1N2jrRHaPibvmmNFep3VYag 提 取码&#xff1a; zkc3 2、将下载的源码包解压…

DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求

DeepSeek 新的 LLM 推理方法 DeepSeek 通过强化学习&#xff08;RL&#xff09;提出了一种创新的改进大规模语言模型&#xff08;LLM&#xff09;推理能力的方法&#xff0c;这在他们最近关于 DeepSeek-R1 的论文中有详细介绍。这项研究代表了在不依赖于大量有监督微调的情况下…

element-ui使用时间选择器 datetime 类型报错

datetime 类型报错 当使用日期组件的type"datetime"时&#xff0c;可能会遇到mask.replace is not a function的错误提示&#xff0c;导致组件无法正常渲染。这通常是因为在项目中定义了与Element UI内部冲突的全局方法&#xff0c;例如dateFormat等方法名与组件内部…

Deepin(Linux)设置开机自动启动 MySQL

要在系统启动时自动启动 MySQL&#xff0c;可以通过配置 systemd 来实现。由于已经完成了 MySQL 的安装并且能够启动 MySQL 服务&#xff0c;接下来我们将创建一个 systemd 服务单元文件&#xff0c;让 MySQL 在系统启动时自动启动。 1. 创建 systemd 服务文件 首先&#xff…

百度觉醒,李彦宏渴望光荣

文 | 大力财经 作者 | 魏力 2025年刚刚开年&#xff0c;被一家名为DeepSeek的初创公司强势改写。在量化交易出身的创始人梁文锋的带领下&#xff0c;这支团队以不到ChatGPT 6%的训练成本&#xff0c;成功推出了性能可与OpenAI媲美的开源大模型。 此成果一经问世&#xff0c;…

angular新闻列表分页

说明&#xff1a;使用angular技术&#xff0c;material控件&#xff0c;ngfor循环&#xff0c;img网络图片展示&#xff0c;分页组件 效果图&#xff1a; step1: C:\Users\Administrator\WebstormProjects\untitled4\src\app\home\home.component.ts import { Component, V…