查找元素';使用javascript设置位置

查找元素';使用javascript设置位置,javascript,html,css,Javascript,Html,Css,大家好,我有下面的代码,我用它来创建一个简单的工具提示 html <div class="x"> <div class="abc">abc</div> </div> 生成的工具提示应始终位于鼠标悬停元素的顶部。在页面滚动之前,此代码可以正常工作。然后滚动页面时,工具提示的位置被推到离鼠标悬停的元素很远的地方。有人能帮我找出问题所在吗。谢谢:)您正在检查使用的scrollLeft是elm的滚动距离。我猜你想要的是窗口的滚动距离 使用win

大家好,我有下面的代码,我用它来创建一个简单的工具提示

html

<div class="x">
    <div class="abc">abc</div>
</div>


生成的工具提示应始终位于鼠标悬停元素的顶部。在页面滚动之前,此代码可以正常工作。然后滚动页面时,工具提示的位置被推到离鼠标悬停的元素很远的地方。有人能帮我找出问题所在吗。谢谢:)

您正在检查使用的
scrollLeft
elm
的滚动距离。我猜你想要的是窗口的滚动距离

使用
window.pageYOffset
window.pageXOffset
如下:

while (elm) {
    x += (elm.offsetLeft - window.pageXOffset + elm.clientLeft);
    y += (elm.offsetTop - window.pageYOffset + elm.clientTop);
    elm = elm.offsetParent;
}
编辑

在试用之后,如果您没有使用
位置:fixed
,那么使用滚动条没有多大意义。我删除了它并编辑了你的小提琴:

编辑2


您也可以将位置更改为
position:fixed
,并按照您希望的方式使用代码:

@klenium我在他的帖子中没有看到任何关于jQuery的内容。@naomik我知道,这就是我将其作为评论发布的原因,但是,jQuery的源代码总是很好地了解了它应该如何工作。它可能值得一看。另外,只需将
pageYOffset
添加到
y
,将
pageXOffset
添加到
x
while (elm) {
    x += (elm.offsetLeft - window.pageXOffset + elm.clientLeft);
    y += (elm.offsetTop - window.pageYOffset + elm.clientTop);
    elm = elm.offsetParent;
}