鼠标 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;
});
热门推荐
决明子:明目降压的神奇小种子
鸡不下蛋的原因和解决方法
联合国:保障黑海航行自由至关重要,俄乌战争持续加剧人道危机
研究生也卷不动就业了
吃豆比吃肉好?植物蛋白or动物蛋白,你更pick谁?
同样是超速提醒,为啥电子狗被禁导航却没事?交警:扰乱安全
中草药:过路黄(金钱草)
减肥的意义是什么?除了让你瘦下来,还有这些好处
银泰百货易主,雅戈尔接棒
街道办主任的工作职责和要求
Science重磅:中国农科院周文彬团队发现单个基因可使水稻大幅增产
民族服饰怎么搭配好看 民族服装搭配什么鞋子
电动车可以双充电器充么?这样做有什么好处?
如何选购床头柜?实用指南助你轻松挑选
API上传图片到服务器的完整指南
高中物理老师编制考试深度解析:笔试面试内容及备考攻略
当读书打卡遇上智能考勤:HR如何用数字化工具把企业文化焊进员工DNA
一文读懂工厂运营门道
邯郸人力资源岗位选择指南:从职业规划到市场分析
你真的懂机械设计吗?看完刷新认知!
发生交通事故的正确处理流程:律师视角
官方发布:隧道施工安全及结构健康保障——自动化监测技术核心内容解析
前GTA制作人新作《MindsEye》预告发布:科幻冒险游戏定价198元
鱼油护心被反转!BMJ新研究:长期吃鱼油这种心脏病风险不降反升
孩子频繁眨眼睛是什么原因?该如何判断和处理这一情况?
如何利用黄金期货进行风险管理?这种管理策略有哪些局限性?
盘点:湖人队签下勒布朗·詹姆斯以来10 大最佳阵容变动排名
2024年湖南省制造业百强企业榜单及企业发展分析
为什么建议业余时间练练书法!
违反保密协议的法律后果是什么