【发布时间】:2020-05-07 14:32:19
【问题描述】:
如何使用 jQuery 找出元素在当前可见屏幕(视口)上的绝对位置?
我有position:relative,所以 offset() 只会给出父级内的偏移量。
我有分层 div,所以$("#me").parent().offset() + $("#me").offset() 也无济于事。
我需要窗口中的位置,而不是文档,所以当文档滚动时,值应该会改变。
我知道我可以将所有父偏移量相加,但我想要一个更简洁的解决方案。
var top = $("#map").offset().top +
$("#map").parent().offset().top +
$("#map").parent().parent().offset().top +
$("#map").parent().parent().parent().offset().top;
有什么想法吗?
更新: 我需要获取我的 div 顶部和文档顶部之间的确切像素间隙,包括填充/边距/偏移量?
我的代码:
HTML
<div id="map_frame" class="frame" hidden="hidden">
<div id="map_wrapper">
<div id="map"></div>
</div>
</div>
CSS
#map_frame{
border:1px solid #800008;
}
#map_wrapper {
position:relative;
left:2%;
top:1%;
width:95%;
max-height:80%;
display:block;
}
#map {
position:relative;
height:100%;
width:100%;
display:block;
border:3px solid #fff;
}
jQuery 调整地图大小以填满屏幕*
var t = $("#map").offset().top +
$("#map").parent().offset().top +
$("#map").parent().parent().offset().top +
$("#map").parent().parent().parent().offset().top;
$("#map").height($(window).height() - t - ($(window).height() * 8 / 100));
谢谢...
【问题讨论】:
-
offset()返回相对于文档的偏移量,无论您如何定位元素。一个元素相对于任何东西的位置在滚动时会如何变化?你确定你不只是在寻找scrollTop()吗? -
如果样式为
position:relative,offset() 将返回父元素的偏移量。 -
当你滚动时,元素到屏幕顶部的距离会发生变化,对吧?
-
那个距离就是scrollTop,与元素位置无关,因为元素位于文档中,而窗口就是您在浏览器中看到的。不,当元素相对定位时,offset 仍然返回相对于文档的偏移量,试试看。请参阅下面的答案,它应该几乎涵盖了它。
-
也许看到这个解决方案:stackoverflow.com/questions/1567327/…
标签: javascript jquery html css