js准确获取弹窗显示的位置
文章图片
let objTop = getOffsetTop(document.getElementById("work-area"));
//对象x位置
let objLeft = getOffsetLeft(document.getElementById("work-area"));
//对象y位置
let mouseX = e.clientX + document.body.scrollLeft;
//鼠标x位置
let mouseY = e.clientY + document.body.scrollTop;
//鼠标y位置
let objX = mouseX - objLeft;
let objY = mouseY - objTop;
self.mouseMenuPos.left = objX + scollPostion().left;
self.mouseMenuPos.top = objY + scollPostion().top;
function scollPostion() {
let t, l, w, h;
if (document.documentElement && document.documentElement.scrollTop) {
t = document.documentElement.scrollTop;
l = document.documentElement.scrollLeft;
w = document.documentElement.scrollWidth;
h = document.documentElement.scrollHeight;
} else if (document.body) {
t = document.body.scrollTop;
l = document.body.scrollLeft;
w = document.body.scrollWidth;
h = document.body.scrollHeight;
}
return {
top: t,
left: l,
width: w,
height: h
};
}function getOffsetTop(obj) {
let tmp = obj.offsetTop;
let val = obj.offsetParent;
while (val != null) {
tmp += val.offsetTop;
val = val.offsetParent;
}
return tmp;
}function getOffsetLeft(obj) {
let tmp = obj.offsetLeft;
let val = obj.offsetParent;
while (val != null) {
tmp += val.offsetLeft;
val = val.offsetParent;
}
return tmp;
}
【js准确获取弹窗显示的位置】
推荐阅读
- EditText默认不获取焦点弹出键盘
- whlie循环和for循环的应用
- 【实用教程】4种获取无水印视频素材的方法
- 插件化无法获取或找到.so文件
- 《加速》第四章
- 获取知识的门槛
- 提取ipa|提取ipa 包内资源
- SpringBoot|SpringBoot 属性配置中获取值的方式
- django|django 获取用户的域名
- [mysql获取当天|[mysql获取当天,昨天,本周,本月,上周,上月的起始时间]