offset.Top在相对容器中使用pageY计算

时间:2015-04-06 23:13:34

标签: javascript

我有一个方向感知悬停的脚本。它工作得很好但事实是,我必须使用相对容器。如果我使用一个,计算得到了所有错误,因为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

希望你明白这一点。

1 个答案:

答案 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)),