全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
窗体顶端标题: 阅读权限: 关键词: 从已有的关键词中选择 文章正文:在jQuery中有两个获取元素位置的方法offset()和position()。position()方法是在1.2.6版本之后加入的,为什么要引 入这个方法呢?这两个方法之间有什么异同?使用的时候应该注意哪些问题?什么时候使用offset(),什么时候又使用position()呢?先看看API对这这两个方法的定义:offset():获取匹配元素在当前视口的相对偏移。返回的对象包含两个整形属性:top 和 left。此方法只对可见元素有效。position():获取匹配元素相对父元素的偏移。返回的对象包含两个整形属性:top 和 left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效。真的就这么简单吗?实践出真知。先来看看在jQuery框架源码里面,是怎么获得position()的:/Get *real* offsetParentvar offsetParent = this.offsetParent(),/Get correct offsetsoffset = this.offset(),parentOffset = /body|html$/i.test(offsetParent0.tagName)? top: 0, left: 0 : offsetParent.offset();/Subtract element margins/note: when an element has margin: auto the offsetLeft and marginLeft/are the same in Safari causing offset.left to incorrectly be 0offset.top-= num( this, marginTop);offset.left -= num( this, marginLeft );/Add offsetParent bordersparentOffset.top+= num( offsetParent, borderTopWidth);parentOffset.left += num( offsetParent, borderLeftWidth );/Subtract the two offsetsresults = top:offset.top- parentOffset.top,left: offset.left - parentOffset.left;注意最后那段 代码: results = top:offset.top- parentOffset.top,left: offset.left - parentOffset.left;代码的意思就是获取本身元素距离它的父元素的距离。用图如下所示:也就是元素B距离元素A的距离。在没有position()方法之前,计算B到A的距离 只有通过 先计算B距浏览器左边距 减去 A的。有了position()方法之后,就可以快速计算出来。不过在使用position()之前,你需要了解一下它们的定位方式。可以看一下测试例子1:点击这里浏览例子l通过例子1页面测试的结果可以得出这个结论:1,使用position()方法时事实上是把该元素当绝对定位来处理,获取的是该元素相当于最近的一个拥有绝对或者相对定位的父元素的偏移位置。2,使用position()方法时如果其所有的父元素都为默认定位(static)方式,则其处理方式和offset()一样,是当前窗口的相对偏移。3,使用offset()方法不管该元素如何定位,也不管其父元素如何定位,都是获取的该元素相对于当前视口的偏移。知道了这些特点后,相信你对它们已经熟悉了。进一步那么我们应该如何来合理的使用position()和offset()呢?就我个人的经验,通常获取一个元素A的位置是为了让另外的一个元素B正好出现在A元素的附近。通常有2种情况:1,要显示的元素B存放在DOM的最顶端或者最底端(即其父元素就是body)。这个时候用offset()是最好的。示例验证:用offset 正常显示的例子 :点击查看例子2用position无法正常显示的例子 :点击查看例子3在以上两个例子中,元素B都存放在Dom 结构的最下面,由于其父元素就是BODY,所以,不管元素A如何定位,只要找的A相当与整个窗口的偏移位置,就可以解决问题。2,若要显示的元素B存放在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州省贵阳市某中学2025-2026学年高一年级上册9月月考历史试题(含解析)
- 创意海报设计理念
- 冬奥精神激励我跨入新学期
- 销售员工培训方案
- 2025新款房屋租赁合同模板
- 2025招标合同LED显示屏采购合同
- 2025年租赁使用权合同模板
- 2025汽车买卖合同个人交易分期版
- 基于特征优化的音频描述算法研究
- 新型高强可焊Al-Cu-Li-Sc合金组织与性能研究
- 工程监造方案模板范文(3篇)
- 围墙工程施工方案(完整版)
- 林业技师考试试题及答案
- 新人教版八年级英语上册全部单词默写版
- 2025年搭建活动板房协议书
- 2025年山东省烟台市高三上学期期中学业水平诊断考试语文试题及答案
- 自闭症康复机构开办及商业计划
- 学校双重预防机制管理制度
- 人工智能与核医学的深度融合与应用探索
- 皮肤感染护理查房
- 充电桩公司客户投诉处理办法
评论
0/150
提交评论