当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery .offset()用法及代码示例


获取第一个元素的当前坐标,或设置匹配元素集中每个元素相对于文档的坐标。

用法一

.offset() => Object

说明:获取匹配元素集中第一个元素相对于文档的当前坐标。

  • 添加的版本:1.2.offset()

    • 此方法不接受任何参数。

.offset() 方法允许我们检索元素的当前位置(特别是它的边框,不包括边距)relative to the document。将此与 .position() 进行对比,后者检索当前位置 relative to the offset parent 。当将新元素放置在现有元素之上以进行全局操作(特别是实现drag-and-drop)时,.offset() 更有用。

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

注意:jQuery 不支持获取隐藏元素的偏移坐标或考虑在<html>文档元素。

虽然可以通过设置visibility:hidden 获取元素的坐标,但display:none 被排除在渲染树之外,因此具有未定义的位置。

其他注意事项:

  • dimensions-related API(包括 .offset() )返回的数字在某些情况下可能是小数。代码不应假定它是整数。此外,当用户缩放页面时,尺寸可能不正确;浏览器不会公开 API 来检测这种情况。

例子:

访问第二段的偏移量:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>offset demo</title>
  <style>
  p {
    margin-left: 10px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p>Hello</p><p>2nd Paragraph</p>
 
<script>
var p = $( "p" ).last();
var offset = p.offset();
p.html( "left: " + offset.left + ", top: " + offset.top );
</script>
 
</body>
</html>

演示:

点击查看偏移量。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>offset demo</title>
  <style>
  p {
    margin-left: 10px;
    color: blue;
    width: 200px;
    cursor: pointer;
  }
  span {
    color: red;
    cursor: pointer;
  }
  div.abs {
    width: 50px;
    height: 50px;
    position: absolute;
    left: 220px;
    top: 35px;
    background-color: green;
    cursor: pointer;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<div id="result">Click an element.</div>
<p>
  This is the best way to <span>find</span> an offset.
</p>
<div class="abs">
</div>
 
<script>
$( "*", document.body ).click(function( event ) {
  var offset = $( this ).offset();
  event.stopPropagation();
  $( "#result" ).text( this.tagName +
    " coords ( " + offset.left + ", " + offset.top + " )" );
});
</script>
 
</body>
</html>

演示:

用法二

.offset( coordinates ) => jQuery

说明:设置匹配元素集中每个元素相对于文档的当前坐标。

  • 添加的版本:1.4.offset( coordinates )

    • coordinates
      类型:PlainObject
      包含属性 topleft 的对象,它们是表示元素的新顶部和左侧坐标的数字。
  • 添加的版本:1.4.offset( function )

    • function
      类型:Function(Integer 索引,PlainObject 坐标)=> PlainObject
      返回要设置的坐标的函数。接收集合中元素的索引作为第一个参数,接收当前坐标作为第二个参数。该函数应返回具有新的topleft 属性的对象。

.offset() setter 方法允许我们重新定位元素。指定元素的 border-box 位置 relative to the document 。如果元素的 position 样式属性当前为 static ,它将被设置为 relative 以允许重新定位。

例子:

设置第二段的偏移量:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>offset demo</title>
  <style>
  p {
    margin-left: 10px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p>Hello</p><p>2nd Paragraph</p>
 
<script>
$( "p" ).last().offset({ top: 10, left: 30 });
</script>
 
</body>
</html>

演示:

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .offset()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。