位置计算
2024年01月18日
一、相对于元素
二、相对于视口
三、相对于元素
3.1 clientXY、boundingClientRect
e.clientX/e.clientY
: 相对于视口坐标, 相对于浏览器视窗左上角的坐标,不考虑页面滚动
el.getBoundingClientRect()
: 包含了元素的大小及其相对于视口的位置信息
实现如下
function getRelativeOfElPosition(e, el) {
const rect = el.getBoundingClientRect();
const x = e.pageX - rect.left;
const y = e.pageY - rect.top - window.scrollY;
return [x, y];
}
3.1 pageXY、scrollXY、boundingClientRect
e.pageX/e.pageY
: 获取的是相对于整个文档左上角的坐标,它们会随着页面的滚动而改变。
scrollX/scrollY
: 页面滚动距离
e.getBoundingClientRect()
: 包含了元素的大小及其相对于视口的位置信息
实现如下
function getRelativeOfElPosition(e, el) {
const rect = el.getBoundingClientRect();
const x = e.pageX - rect.left - window.scrollX;
const y = e.pageY - rect.top - window.scrollY;
return [x, y];
}