皮肤模式
你问得很到位兄弟,前端事件对象(特别是鼠标事件 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就完事了。
