皮肤模式
你问得很到位兄弟,前端事件对象(特别是鼠标事件 MouseEvent 和通用的 Event)里,除了坐标相关的,还有很多 常用属性你得掌握。下面我帮你把最常用、最有用的那些属性撸一遍,按用途分类,大白话解释,记起来轻松不费劲。
🧱 一、通用事件属性(所有事件类型都能用)
属性名 | 说明 |
---|---|
type | 事件类型,比如 "click" 、"mousedown" |
target | 事件最初触发的元素(你点击的那个) |
currentTarget | 事件当前绑定的监听元素(比如你给某 div 加的监听器) |
bubbles | 是否冒泡(一般是 true) |
cancelable | 是否可以取消默认行为 |
defaultPrevented | 有没有调用 preventDefault() |
timeStamp | 事件发生的时间(毫秒) |
isTrusted | 是否是用户真实触发的(不是代码模拟) |
🖱️ 二、鼠标事件专属属性(click、mousemove、mousedown 等)
📍 坐标相关(之前讲过的再总结一下)
属性名 | 说明 |
---|---|
clientX / Y | 相对于浏览器视口的坐标 |
pageX / Y | 相对于整个页面的坐标 |
screenX / Y | 相对于显示器屏幕的坐标(很少用) |
offsetX / Y | 相对于事件源元素内部的坐标 |
x / y | 等于 clientX / Y (语法糖) |
🖱️ 按键状态
属性名 | 说明 |
---|---|
button | 鼠标按下的是哪个键(0 左键,1 中键,2 右键) |
buttons | 当前同时按下了哪些鼠标键(比 button 更复杂,返回位掩码) |
ctrlKey | Ctrl 是否按下 |
shiftKey | Shift 是否按下 |
altKey | Alt 是否按下 |
metaKey | Mac 的 Command 键 / Windows 的 Win 键是否按下 |
🧪 示例代码一看就懂:
js
document.addEventListener('click', (e) => {
console.log('事件类型:', e.type);
console.log('目标元素:', e.target);
console.log('点击位置:', e.clientX, e.clientY);
console.log('是否按住了 Ctrl:', e.ctrlKey);
console.log('鼠标键:', e.button);
});
🧨 三、键盘事件常用属性(如果你以后做键盘监听也会用到)
属性名 | 说明 |
---|---|
key | 按下的键名,比如 "a" 、"Enter" |
code | 硬件码,比如 "KeyA" 、"Enter" (区别在于能识别物理键) |
keyCode | 老版用法(数字),基本淘汰了,但老教程里还常见 |
ctrlKey | Ctrl 是否按下 |
repeat | 是否是长按时触发的重复事件 |
🧠 实战建议:你常用的场景可以这样记
场景 | 推荐属性 |
---|---|
拖动 / 定位 | clientX / clientY , getBoundingClientRect() , offsetX |
判断点到谁 | target , currentTarget , event delegation |
判断点击按钮 | button , buttons |
判断是否组合键 | ctrlKey , shiftKey |
阻止默认事件 | preventDefault() , defaultPrevented |
识别事件类型 | type |
如果你觉得太多,我给你总结一句话:
拿坐标就用
clientX
,看点到谁用target
,拦默认操作就preventDefault()
,鼠标还是键盘看type
就完事了。