鼠标 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;
});
热门推荐
糖尿病痛性神经病变患者如何解除疼痛?湘雅二医院成功开展脊髓电刺激器植入术
研究证实:血清总胆汁酸水平升高与肝硬化患者患肝癌风险增加相关
2025年供应链管理能力提升培训课件
青少年近视患者应该选择什么样的镜片
like doing和like to do的区别 二者有何不同
人体胚胎发育过程
最值得购买的5款国产越野车!动力强劲、越野性好、性价比高
四川2025年高考录取数据出炉:一本录取率约38%
【环球财经】短线获利了结打压 国际金价八创历史新高后回落
阿坝州探秘!解锁自然奇景与藏味美食之旅
一氧化碳中毒是什么意思
生物扩展:淀粉、纤维素和糖原三种多糖不同原因
自己在家熬猪油吃,健康吗?
薏米生熟有区别?中医解析功效及薏米柠檬水、薏米粥制作方法
选鞋注意这些方面才能保护您的脚
云计算运维培训出来有用吗?企业认可吗
如何合规处理五险的相关事宜?五险的处理方式有哪些限制?
撤销案件以后还有影响吗
产科医生科普:如何应对新生儿夜醒和哭闹问题?
临时工作如何寻找与申请技巧
白术种植成本和利润分析(从种植到销售)
期货交易中的海龟交易法则:从入市到止盈的完整指南
打破“恐弱”心态的桎梏,铸就真正强大内心
歼-20的鸭翼暴露出发动机推力不足的“短板”?
单口相声和脱口秀到底哪不一样?
河南有几所大学?2024河南高校数量全盘点!
Inconel合金材料特性详解:600、601、625和718的对比分析
晚上喝可乐会睡不着吗?医生的专业解答来了
低空通信 | 低空通信为什么需要通感一体?为什么5G-A可以通感一体?
雾化吸入治疗:原理、设备、药物与临床应用全解析