javascript - 如何添加事件侦听器以确定单击 div 内的坐标?
问题描述
假设我有 200 像素 x 500 像素的 div 框。
目标是添加一个事件侦听器来确定单击的此 div 内的 x 和 y 坐标。
在 React 中怎么会这样呢?
解决方案
您可以使用getBoundingClientRect()
获取元素的位置,加上MouseEvent.clientX
和MouseEvent.clientY
获取点击坐标。
见演示:
function XYComponent() {
const go = (e) => {
const offsets = e.target.getBoundingClientRect();
const y = e.clientY - offsets.top;
const x = e.clientX - offsets.left;
console.log(x, y);
}
return (
<div>
<div class="demo" onClick={go}>AAA</div>
<div class="demo" onClick={go}>BBB</div>
</div>
)
}
ReactDOM.render(<XYComponent />, document.querySelector("#app"))
body {
font-family: monospace;
}
.demo {
border: 1px solid black;
padding: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="app"></div>
推荐阅读
- typescript - 带有 JSON 数组的 Antd 反应表(动态)
- wordpress - 如何更改博客中的帖子数量并包含分页
- java - 如何将数据从片段中的 ListView 传递到弹出窗口?
- idm - 如何在每次重启时关闭弹出的谷歌浏览器集成
- dll - 动态链接库 .Net 忽略参考路径
- javascript - 在 vue 中获取 [object HTMLDivElement] 而不是 HTML append
- swift - 可以将标头添加到 URL swift
- android - 无法将 'class java.lang.String' 类型的项目属性 android.useAndroidX='true' 解析为布尔值。预期为“真”或“假”
- php - PHPDoc - IDE 的动态函数名称和返回类型
- python - Python falcon框架集成测试不起作用