我有一个位置“固定”的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。
答案 0 :(得分:14)
您可以使用.offset()
获取元素相对于文档的当前坐标,而使用.position()
获取元素相对于其偏移父级的当前坐标。
答案 1 :(得分:4)
.offset()为您提供相对于整个文档的坐标。
.offset()方法允许我们检索一个的当前位置 元素相对于文档。将此与.position()对比, 它检索相对于偏移父项的当前位置。 将新元素定位在现有元素之上时 操纵(特别是用于实现拖放), .offset()更有用。
.offset()返回一个包含top和left属性的对象。
注意:jQuery不支持获取隐藏的偏移坐标 元素或计算边界,边距或填充 身体元素。
答案 2 :(得分:0)
除非您刷新页面,否则滚动条在初始化时位于不同的位置。
答案 3 :(得分:0)
($("div").offset().top - $(document).scrollTop())