用jquery获取固定div的位置

时间:2012-03-02 04:01:39

标签: jquery html position fixed

我有一个位置“固定”的div,我希望在用户向下滚动页面时获得相对于整个文档的位置的值

所以,假设我把div放在(x = 0,y = 0)然后用户向下滚动一点,现在,相对于文档,div打开(X = 0,y = 300) 。我希望得到这些信息,我想知道该div在每个时刻的确切位置,相对于整个文档,而不是窗口或浏览器。

我尝试过很多东西,但似乎没有什么可以得到我想要的东西。

其中一个是此代码,在固定div的情况下不起作用

var position = $("#fixed").offset(); /*it gets the position of the div
                                     "fixed" relative to the document*/
$("#fixed").html(position.top);      /*it prints the obtained
                                     value on the div "fixed"*/

Here you can find the running code,您可以看到,当您向下滚动时,div 的位置值不会改变

如果我没有错,代码应该在每次更改相对于文档的垂直位置时在div上打印一个新值。但事实证明它不会发生。


解决:

问题由codef0rmer解决。 我缺少跟踪滚动以刷新固定div的位置值。我是个白痴。所以最终代码的工作方式很好:

$(function () {
    var position = $("#fixed").offset();
    $("#fixed").html(position.top);

    $(window).scroll(function () {
       var position = $("#fixed").offset();
        $("#fixed").html(position.top);
    });
})

here you can see the running code.

谢谢大家,特别感谢codef0rmer。

4 个答案:

答案 0 :(得分:14)

您可以使用.offset()获取元素相对于文档的当前坐标,而使用.position()获取元素相对于其偏移父级的当前坐标。

答案 1 :(得分:4)

.offset()为您提供相对于整个文档的坐标。

  

.offset()方法允许我们检索一个的当前位置   元素相对于文档。将此与.position()对比,   它检索相对于偏移父项的当前位置。   将新元素定位在现有元素之上时   操纵(特别是用于实现拖放),   .offset()更有用。

     

.offset()返回一个包含top和left属性的对象。

     

注意:jQuery不支持获取隐藏的偏移坐标   元素或计算边界,边距或填充   身体元素。

答案 2 :(得分:0)

除非您刷新页面,否则滚动条在初始化时位于不同的位置。

答案 3 :(得分:0)

($("div").offset().top - $(document).scrollTop())