如何获取隐藏元素的坐标? offset()
不支持隐藏元素的使用。任何提示?
答案 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的大小而改变。这在我的案例中运作良好,因为我使用的是绝对对照窗口的元素(全屏/窗口应用程序)。
用户建议的其他方法也有效,但这一切都取决于您的工作。