javascript - 是否可以仅相对于您的元素获取鼠标位置
问题描述
如果我在给定元素中有多个子元素,我很难获得相对于元素附加事件的鼠标位置。
domElement.addEventListener('wheel', event => {
event.offsetX //x relative to target element
event.offsetY //y relative to target element
}
如果我的鼠标悬停在一个子元素上,它会给出子元素的位置。我知道 event.pageX 或 event.clientX 但它给了我相对于窗口/视口的鼠标位置。
const element = document.getElementById("wrapper");
const output = document.getElementById("output");
element.addEventListener("wheel", event =>{
output.innerHTML = `offsetX: ${event.offsetX}, offsetY: ${event.offsetY}`;
});
#wrapper{
height:300px;
width:500px;
background:#ccc;
position:absolute;
left:400px;
top:20px;
}
#child{
position:relative;
height:120px;
width:130px;
left:50px;
top:120px;
background: green;
}
<div id="wrapper">
<div id="child">
</div>
</div>
<div id="output"></div>
解决方案
你可以使用这个:https ://developer.mozilla.org/es/docs/Web/API/Element/getBoundingClientRect 来获取元素的位置,然后就是一个简单的操作。
推荐阅读
- node.js - NodeJS xml-stream,解析未知节点
- java - 在 java 的继承中以不同的方式创建对象时会发生什么?
- encryption - Openssl 1.0.2p 解密失败?
- android - Android:我已经删除了我的数据,但房间里仍然存在一些数据
- c++ - 未知的 CMake 命令“create_single_source_cgal_program”
- sql - 在 SQL Server 2012 中每次都询问未提交的事务
- ruby - 在带有 winrm 的 PowerShell 脚本中使用 ruby 变量
- java - 验证抛出 java.security.InvalidKeyException: null
- java - 如何删除字符串串联中的最后一个“ & ”?
- r - 运行套索:包 'glmnet' 不可用(对于 R 版本 3.4.3)