【问题标题】:Get the position of a fixed div with jquery用jquery获取固定div的位置
【发布时间】:2012-03-02 04:01:39
【问题描述】:

我有一个位置“固定”的 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。

【问题讨论】:

    标签: jquery html position fixed


    【解决方案1】:

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

    【讨论】:

    • 谢谢,虽然这个答案和上一个答案基本相同,并且不起作用。我再次编辑了问题,添加了一个演示供您查看它不起作用。
    • 如果不编写任何代码来跟踪您的滚动,您希望代码如何工作?见:jsfiddle.net/kVJ4x/4
    • 是的,我后来意识到,我正在考虑尝试用“mousemove”刷新值,这是一个愚蠢的想法,因为我想要的是在用户向下滚动时触发操作.谢谢,它现在很好用,我会发布它。
    【解决方案2】:

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

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

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

    注意:jQuery 不支持获取 hidden 的偏移坐标 元素或考虑边界、边距或填充设置在 身体元素。

    【讨论】:

    • 有用信息... $("#").offset().left, $("#").offset().top
    • 谢谢,但正如我所说,我在几个小时内尝试了很多东西,当然我阅读了 jQuery api,这就是你引用的内容。我编辑了我的消息,包括您建议的方法,但它不起作用。
    【解决方案3】:

    除非您刷新页面并且滚动条在初始化时处于不同的位置。

    【讨论】:

      【解决方案4】:
      ($("div").offset().top - $(document).scrollTop())
      

      【讨论】:

      • 嗨!您能否扩展您的答案?仅仅发布一段代码并不能给社区带来太多恕我直言
      猜你喜欢
      • 1970-01-01
      • 2015-05-04
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多