鼠标 event 中的各种 X 与 Y
创作时间:
作者:
@小白创作中心
鼠标 event 中的各种 X 与 Y
引用
1
来源
1.
https://juejin.cn/post/7483049212314779683
在前端开发中,鼠标事件是一个非常基础但又极其重要的知识点。然而,对于初学者来说,鼠标事件中的各种X和Y坐标往往容易混淆。本文将详细讲解这些坐标的含义和使用场景,并通过一个拖拽案例来加深理解。
event 中的各种 X 与 Y
初学者在使用鼠标事件监听器时,总会搞混 X 与 Y 的作用与含义,这篇文章便来仔细讲讲这方面的知识。
client x | y
client 指的是当前事件触发位置相对于浏览器左上角的坐标,由于该值是相对于浏览器的坐标,因此如果绑定的元素滚动则该值会因为页面的滚动导致该值的计算原点改变,从而导致结果不同。
layer x | y
layer 指的是当前事件触发位置相对于其具有定位元素的父元素的左上角的坐标,如果找不到父元素则以 body 的左上角为原点。
offset x | y
offset 指的是当前事件触发位置相对于事件元素的坐标,并且由于该属性指的是整个事件元素,因此计算时会算上 padding 的值。
page x | y
page 指的是当前事件触发位置相对于文档左上角的坐标,由于该值是相对于整个文档流的坐标,因此即使发生滚动,该值也按照原先的原点进行计算
screen x | y
screen 指的是当前事件触发位置相对于你的整个显示器(电脑屏幕)左上角的坐标,因此该值会根据你浏览器窗口的位置改变而发生改变。
特殊事件的 event
movement x | y
movement 是 mousemove 事件特定的属性,只有在 mousemove 中能够具有有效值。它指的是当次鼠标移动位置与上一次鼠标移动位置的大小,向右移动为正值,向左为负值,以此类推。
delta x | y | z
delta 是鼠标滚轮事件的特定属性,只有鼠标滚轮时才具有有效值。该值指的是鼠标的滚动量,该值具有正负,因此可以用来表示滚动的方向。
一个小案例
拖拽案例
const box = document.getElementById('box');
let moving = false;
let xBuffer = 0;
let yBuffer = 0;
document.addEventListener('mousedown', (e) => {
if (moving && e.target.id !== 'box') {
return;
}
const { left, top } = box.style;
const { clientX, clientY } = e;
moving = true;
xBuffer = clientX - Number(left.substr(0, left.indexOf('px')));
yBuffer = clientY - Number(top.substr(0, top.indexOf('px')));
});
document.addEventListener('mousemove', (e) => {
if (!moving) {
return;
}
box.style.left = (e.clientX - xBuffer) + 'px';
box.style.top = (e.clientY - yBuffer) + 'px';
});
document.addEventListener('mouseup', (e) => {
if (!moving) {
return;
}
moving = false;
});
热门推荐
姜黄素的功效与作用和使用方法是什么
绘画的视觉语言:线条、色彩与构图的美学意义
AI完成百万字长篇小说,写作这门手艺赛博化?
美国税制深度解析:州税与联邦税的全面比较与分析
南方水塔、长江珠江水系分水岭:贵州三江口集锦
嫦娥六号月壤样本首批研究成果发布 揭示月背火山活动历史
依托考昔片成人需要使用多少个疗程
高精度、高稳定性、宽频带、易于集成和长寿命的超高稳OCXO在各个领域中大放异彩
2025赛季K联赛巡礼全北现代篇:波耶特+孔帕尼奥,低谷中的全北誓言重返巅峰
睡得更香!用这5点,化解卫生间门正对床的尴尬问题
电脑复制粘贴背后发生了什么
“国际范儿”+“新中式”体验,爱达·魔都号还有什么不能给你?
2025年四年级课外书必读推荐 值得读的书目分享
虾要煮多久才熟 怎么判断虾是否已经熟透了
利率5%难觅,美元存款还香吗
专家建议,日间手术的居家护理与康复小窍门
苹果电源管理项目是什么
AI时代,年轻产品经理的突围路径:从执行者到价值重构者
桑叶茶:天然饮品的健康秘密
如何高效实现安卓手机备份,确保重要数据?
中医经典阅读优秀文章展:《黄帝内经》——治未病之未病先防
佛山祖庙游览记
未观影不支持退票 平台影院“踢皮球” 聚焦电影票销售“霸王条款”
企业ESG目标的践行路径
揭秘恶意代理退保,科普保险网上退保的正确打开方式
如何计算股票投资中的税务问题
糖尿病诊断大揭秘:空腹血糖高就一定有问题吗?答案出人意料
全国退休基本工资排名公布:探寻各地退休金差异背后的原因
血常规里的超敏C反应蛋白,多少才算高?
美少女战士中的神话元素解析