我有一个方向感知悬停的脚本。它工作得很好但事实是,我必须使用相对容器。如果我使用一个,计算得到了所有错误,因为offsetTop从容器计数而不是正文。当我在计算中使用pageY和pageX时,我得到了错误的结果。
y = (ev.pageY - obj.offsetTop - (h / 2) * (h > w ? (w / h) : 1)),
x = (ev.pageX - obj.offsetLeft - (w / 2) * (w > h ? (h / w) : 1)),
我得到了console.log的小提琴: https://jsfiddle.net/zvny953x/
我需要实现的是,obj.offsetTop和obj.offsetLeft将忽略相对容器。猜猜不可能,所以我必须根据整个文件中的元素位置计算它的位置,而不仅仅是容器
假设我在网页上找到了这个容器,这就是console.log所说的:
第Y页:2682 pageX:1050 obj.offsetTop:235 obj.offsetLeft:101
应该是什么样的:
pageY:2765 pageX:91 obj.offsetTop:2682 obj.offsetLeft:101
希望你明白这一点。
答案 0 :(得分:0)
我设法做到了。
这是我添加的内容:
rect = obj.getBoundingClientRect();
clientTop = document.documentElement.clientTop || obj.clientTop || 0,
scrollTop = (window.pageYOffset || document.documentElement.scrollTop || obj.scrollTop),
x = (ev.pageX - rect.left - (w / 2) * (w > h ? (h / w) : 1)),
y = (ev.pageY - rect.top - scrollTop - clientTop - (h / 2) * (h > w ? (w / h) : 1)),