获取隐藏元素的偏移量

时间:2011-05-12 06:46:22

标签: jquery hidden offset

如何获取隐藏元素的坐标? offset()不支持隐藏元素的使用。任何提示?

3 个答案:

答案 0 :(得分:47)

如果你的元素已经调用.hide(),或者它在css中有display:none,那么浏览器根本不会去渲染它。在这种情况下,答案不是直接的。在最近的jQueries中,你甚至无法获得它的宽度或高度。

另一方面,如果你.show()一个元素,那么.hide()在执行循环之前(一个事件触发到没有更多代码为该事件运行的时候),浏览器将被迫重新布局页面,你将能够在它显示和隐藏之间得到它的偏移,但它不会被强制重绘,所以你的用户不会看到一个短暂的,你不会丢失你可能会想到很多表现。

答案 1 :(得分:29)

您可以获取visibility:hidden元素的坐标,但display:none元素从渲染树中排除。所以它的立场是不明确的。

答案 2 :(得分:0)

除了快速展示& do-stuff& hide -procedure,可能只需使用加载掩码来假装屏幕(或其中的一部分)是不可见的。

当我在有隐藏元素的地图上工作时,就会发生这种情况。我需要在不显示这些元素的情况下读取css-position / offsets。我提出了三种可能的使用方法:

  • 暂时在地图上加载蒙版,以便地图不显示隐藏元素和读取偏移(问题:叠加也隐藏父元素(地图))。如果没有需要显示的父元素,这种方法效果最好。

  • 更改隐藏元素的z-index,使它们位于父元素后面,显示&并读取值,隐藏'em并将z-index更改为原始值。

  • 为CSS样式使用单独的数据变量,以便它们是元素的一部分。如果元素对窗口或某个元素具有固定/绝对位置,则这很好用,因为css-positions / offsets不会根据window / element的大小而改变。这在我的案例中运作良好,因为我使用的是绝对对照窗口的元素(全屏/窗口应用程序)。

用户建议的其他方法也有效,但这一切都取决于您的工作。