找到HTML元素和浏览器(或窗口)边之间的距离

时间:2011-01-05 07:50:45

标签: javascript jquery html position distance

如何使用jQuery找到html元素与浏览器(或窗口)之一(左侧或顶部)之间的距离(以像素为单位)?

2 个答案:

答案 0 :(得分:47)

您可以使用offset功能。它为您提供了相对于文档(左侧,顶部)的元素位置:

var offset = $("#target").offset();
display("span is at " + offset.left + "," + offset.top + 
  " of document");

Live example在我的浏览器中,该示例说明我们定位的范围是文档的157,47(左侧,顶部)。这是因为我在body元素上应用了一个较大的填充值,并使用了一个带有上方间隔的跨度和前面的一些文本。

Here's a second example在文档顶部的绝对左侧显示一个段落,显示0,0作为其位置(并且还显示稍后偏离左侧和顶部的跨度,129,19在我的位置上)浏览器)。

答案 1 :(得分:33)

jQuery.offset需要与scrollTopscrollLeft结合使用,如下图所示:

viewport scroll and element offset

演示:

function getViewportOffset($e) {
  var $window = $(window),
    scrollLeft = $window.scrollLeft(),
    scrollTop = $window.scrollTop(),
    offset = $e.offset();
  return {
    left: offset.left - scrollLeft,
    top: offset.top - scrollTop
  };
}
$(window).on("load scroll resize", function() {
  var viewportOffset = getViewportOffset($("#element"));
  $("#log").text("left: " + viewportOffset.left + ", top: " + viewportOffset.top);
});
body { margin: 0; padding: 0; width: 1600px; height: 2048px; background-color: #CCCCCC; }
#element { width: 384px; height: 384px; margin-top: 1088px; margin-left: 768px; background-color: #99CCFF; }
#log { position: fixed; left: 0; top: 0; font: medium monospace; background-color: #EEE8AA; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<!-- scroll right and bottom to locate the blue square -->
<div id="element"></div>
<div id="log"></div>