offset和position区别

offset和position区别

ID:40563798

大小:90.50 KB

页数:4页

时间:2019-08-04

offset和position区别_第1页
offset和position区别_第2页
offset和position区别_第3页
offset和position区别_第4页
资源描述:

《offset和position区别》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、窗体顶端·标题:  阅读权限:·关键词:   从已有的关键词中选择  文章正文:在jQuery中有两个获取元素位置的方法offset()和position()。position()方法是在1.2.6版本之后加入的,为什么要引入这个方法呢?这两个方法之间有什么异同?使用的时候应该注意哪些问题?什么时候使用offset(),什么时候又使用position()呢? 先看看API对这这两个方法的定义:offset():获取匹配元素在当前视口的相对偏移。返回的对象包含两个整形属性:top和left。此方法只对可见元素有效。position():获取匹配元素相对父元素的偏移。返回

2、的对象包含两个整形属性:top和left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效。真的就这么简单吗?实践出真知。先来看看在jQuery框架源码里面,是怎么获得position()的: //Get*real*offsetParentvaroffsetParent=this.offsetParent(),//Getcorrectoffsetsoffset      =this.offset(),parentOffset=/^body

3、html$/i.test(offsetParent[0].tagName)?{top:0,left:

4、0}:offsetParent.offset();//Subtractelementmargins//note:whenanelementhasmargin:autotheoffsetLeftandmarginLeft//arethesameinSafaricausingoffset.lefttoincorrectlybe0offset.top  -=num(this,'marginTop'  );offset.left-=num(this,'marginLeft');//AddoffsetParentbordersparentOffset.top  +=num(of

5、fsetParent,'borderTopWidth'  );parentOffset.left+=num(offsetParent,'borderLeftWidth');//Subtractthetwooffsetsresults={top:  offset.top  -parentOffset.top,left:offset.left-parentOffset.left};注意最后那段代码:results={top:  offset.top  -parentOffset.top,left:offset.left-parentOffset.left};代码的意思就是

6、获取本身元素距离它的父元素的距离。用图如下所示:也就是元素B距离元素A的距离。在没有position()方法之前,计算B到A的距离只有通过先计算B距浏览器左边距减去A的。有了position()方法之后,就可以快速计算出来。不过在使用position()之前,你需要了解一下它们的定位方式。可以看一下测试例子1: 点击这里浏览例子l通过例子1页面测试的结果可以得出这个结论: 1,使用position()方法时事实上是把该元素当绝对定位来处理,获取的是该元素相当于最近的一个拥有绝对或者相对定位的父元素的偏移位置。2,使用position()方法时如果其所有的父元素都为默认

7、定位(static)方式,则其处理方式和offset()一样,是当前窗口的相对偏移。3,使用offset()方法不管该元素如何定位,也不管其父元素如何定位,都是获取的该元素相对于当前视口的偏移。知道了这些特点后,相信你对它们已经熟悉了。进一步那么我们应该如何来合理的使用position()和offset()呢? 就我个人的经验,通常获取一个元素A的位置是为了让另外的一个元素B正好出现在A元素的附近。通常有2种情况:1,要显示的元素B存放在DOM的最顶端或者最底端(即其父元素就是body)。这个时候用offset()是最好的。示例验证:用offset正常显示的例子: 点

8、击查看例子2用position无法正常显示的例子: 点击查看例子3在以上两个例子中,元素B都存放在Dom结构的最下面,由于其父元素就是BODY,所以,不管元素A如何定位,只要找的A相当与整个窗口的偏移位置,就可以解决问题。2,若要显示的元素B存放在元素A的同一父元素下(即B为A的兄弟节点),这个时候使用position()是最合适的。用position正常显示的例子:点击查看例子4用offset五法正常显示的例子:点击查看例子5窗体底端

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。