如何在没有使用jQuery的情况下获取固定元素的位置?

9

你好

我有一个固定位置的元素,无法检测其位置,并且必须使用纯 JavaScript 进行操作,不得使用任何框架(jQuery、MooTools 等)。


1
可能重复:https://dev59.com/Q3RC5IYBdhLWcg3wAcM3 - Pranav 웃
4个回答

11

使用:

var boundingBox = node.getBoundingClientRect();

请查看结果,您将会得到这样一个对象:

top    : 0,
right  : 0,
bottom : 0,
left   : 0,
width  : 0,
height : 0

5
这有帮助吗:
document.getElementById('id').offsetLeft // + window.scrollX
document.getElementById('id').offsetTop // + window.scrollY

你可能希望查看:这个问题,它与动态检索HTML元素的位置有关。请注意保留HTML标记。

如果你想得到和 jQuery 相同的结果,你需要减去 margin。 - user1663023

2
function findPos(obj) {

    var curleft = curtop = 0;

    if (obj.offsetParent)
    do {
        curleft += obj.offsetLeft;
        curtop += obj.offsetTop;

    } while (obj = obj.offsetParent);

    return [curleft,curtop];
}

http://www.quirksmode.org/js/findpos.html


首先,您有一个语法问题,您打开了“{”(请查看“if(obj.offsetParent){”),但您没有关闭它!无论如何,这对于滚动的div不起作用。 - Totty.js

0

如果你需要一个跨平台的解决方案,你可以查看微框架Popper.js源代码。我通过尝试解决这个弹出问题找到了你的问题,但我相信它适用于任何固定元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接