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