[前端开发] 常见的 HTML CSS JavaScript 事件

常见的 HTML CSS JavaScript 事件


事件

在 Web 开发中,事件是用户与网页交互的重要方式之一。通过事件,用户可以与页面元素进行交互,触发相应的功能或效果。本文将介绍常见的 HTML、CSS、JavaScript 事件,以及事件对象和事件代理的概念。

HTML 事件

鼠标事件

鼠标事件是用户通过鼠标与页面元素交互时触发的事件。常见的鼠标事件包括:

  • click: 单击鼠标时触发。
  • dblclick: 在同一元素双击鼠标时触发。
  • mousedown: 按下鼠标键时触发。
  • mouseup: 释放按下的鼠标键时触发。
  • mousemove: 当鼠标在节点内部移动时触发,持续移动时会连续触发。
  • mouseenter: 鼠标进入一个节点时触发,进入子节点不会触发。
  • mouseleave: 鼠标离开一个节点时触发,离开父节点不会触发。
  • mouseover: 鼠标进入一个节点时触发,进入子节点会再次触发。
  • mouseout: 鼠标离开一个节点时触发,离开父节点也会触发。
  • wheel: 滚动鼠标时触发。

键盘事件

键盘事件是用户通过键盘与页面元素交互时触发的事件。常见的键盘事件包括:

  • keydown: 按下键盘时触发。
  • keypress: 按下有值的键触发(数字、字母等)。
  • keyup: 松开键盘时触发。

表单事件

表单事件是用户在表单元素中输入时触发的事件。常见的表单事件包括:

  • input: 当表单元素的值发生改变时触发。
  • select: 当在输入框中选中文本时触发。
  • change: 当表单元素的值发生改变时触发,但与 input 不同的是不会连续触发,而是在全部修改完后触发。
  • reset: 当表单重置时触发,即所有表单成员变回默认值。
  • submit: 当表单数据向服务器提交时触发。

JavaScript 事件对象

事件发生后,会产生一个事件对象作为参数传给监听函数。事件对象常见的属性包括:

  • Event.target: 返回事件当前所在的节点。
  • Event.type: 返回一个字符串,表示事件的类型。
  • Event.preventDefault(): 取消浏览器对当前事件的默认行为。
  • Event.stopPropagation(): 阻止事件在 DOM 中继续传播。

事件代理(事件委托)

事件代理是一种将事件处理程序添加到一个父元素上,以处理其子元素的事件的技术。通过事件代理,可以实现更高效的事件管理,减少事件处理程序的数量。常用于列表或表格等动态内容的处理。

html 复制代码
<ul id="list">
    <li>列表1</li>
    <li>列表2</li>
    <li>列表3</li>
    <li>列表4</li>
    <li>列表5</li>
</ul>

<script>
    var list = document.getElementById("list");
    list.addEventListener("click", function(e) {
        if (e.target.tagName === "LI") {
            console.log("点击了 li 标签");
            console.log(e.target.innerHTML);
        }
    });
</script>

通过事件代理,我们可以在父元素上监听子元素的事件,从而简化代码并提高性能。

在 Web 开发中,事件是实现交互的关键,理解事件相关知识将有助于更好地处理用户与网页之间的交互行为。

相关推荐
Jagger_6 小时前
项目上线忙碌结束之后,为什么总想找点事做?
前端
GalenZhang8886 小时前
OpenClaw 配置多个飞书账号实战指南
前端·chrome·飞书·openclaw
steven~~~7 小时前
为什么mq报错
javascript
萌新小码农‍7 小时前
python装饰器
开发语言·前端·python
threelab8 小时前
Three.js 初中数学函数可视化 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
爱学习的程序媛8 小时前
浏览器工作原理全景解析
前端·浏览器·web
凉辰8 小时前
解决 H5 键盘遮挡与页面上推
开发语言·javascript·计算机外设
我是若尘9 小时前
用 Git Worktree 同时开多个需求,不用来回 stash
前端
IT_陈寒9 小时前
Vue的v-for为什么不加key也能工作?我差点翻车
前端·人工智能·后端
小碗羊肉9 小时前
【JavaWeb | 第十二篇】项目实战——登录功能
java·前端·数据库