本人自己在写代码的过程中,一直对e.offsetX 与 e.offsetY 分不清,今天好好探究一下e.offsetX 与 e.offsetY
e.offsetX 与 e.offsetY 下相对与事件源的距离,也就是距离e.target的距离, 大家看下面例子,给出几张截图。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
ul {
width: 300px;
height: 200px;
background: #f40;
margin: 0;
padding: 0;
list-style: none;
}
li {
height: 30px;
border-bottom: 1px solid #ccc;
list-style: none;
}
</style>
</head>
<body>
<!-- -->
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
// e.offsetX -> 相对于e.target的距离
let ul = document.getElementsByTagName('ul')[0]
ul.onclick = (e) => {
console.log(e.offsetX, e.offsetY)
}
</script>
</body>
</html>
因为这个的 事件源就是ul元素本身 ,点击事件就是在ul上面触发的。所以offsetX 和 offsetY是相对于ul的。
这个的offsetX 和 offsetY是相对于 2这个li!因为存在事件冒泡,点击事件是在2这个li上面触发的,e.target是2这个li,事件源是2这个li,e.offsetX 和 e.offsetY 就是相对于2这个li的距离
同理。这个的offsetX 和 offsetY是相对于 3这个li!因为存在事件冒泡,点击事件是在3这个li上面触发的,e.target是3这个li,事件源是3这个li,e.offsetX 和 e.offsetY 就是相对于3这个li的距离