Jquery中offset()和position()的区别分析


Posted in Javascript onFebruary 05, 2015

本文实例分析了Jquery中offset()和position()的区别。分享给大家供大家参考。具体分析如下:

一、Jquery中offset()

获取匹配元素在当前视口的相对偏移。 总是计算相对于文档的位置,无论元素的父元素或祖先元素的position属性是什么。
返回的对象包含两个整形属性:top 和 left。此方法只对可见元素有效。
 
例如:

<!DOCTYPE html> 
<html> 
<head> 
<style> 
p { margin-left:10px; } 
</style> 
<script src="js/jquery.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>

二、Jquery中position()

获取匹配元素相对父元素的偏移。 更通俗一点,含有position:relative的元素的最近的父元素或祖先元素---的位置。如果未能找到这样的父元素或祖先元素,那么会计算相对于文档(即视区左上角)的位置. 返回的对象包含两个整形属性:top 和 left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。

例如:

<!DOCTYPE html> 
<html> 
<head> 
 <style> 
 div { padding: 15px;} 
 p { margin-left:10px; } 
 </style> 
 <script src="jquery脚本URL"></script> 
</head> 
<body> 
<div> 
 <p>Hello</p> 
</div> 
<p></p> 
<script> 
var p = $("p:first"); 
var position = p.position(); 
$("p:last").text( "left: " + position.left + ", top: " + position.top ); 
</script> 
</body> 
</html>

三、offset()和position()的区别
 
1、offset()方法获取匹配元素在当前窗口的相对偏移量。这里的窗口指的是当前页面的窗口,不包括浏览器的菜单栏等,当然我们也不太需要使用jquery来控制整个浏览器,我们所要控制的是页面窗口。

2、position()方法获取匹配元素相对父元素的偏移量。即获取的是该元素相对于最近的一个拥有绝对定位或者相对定位的父元素的偏移量。如果所有的父元素都是默认的static定位方式,则其处理方式和offset()一样,是当前窗口的偏移量。

3、使用position()方法时如果其所有的父元素都为默认定位(static)方式,则其处理方式和offset()一样,是当前窗口的相对偏移

4、使用offset()方法不管该元素如何定位,也不管其父元素如何定位,都是获取的该元素相对于当前视口的偏移。

5、一般情况下,如果要显示的元素B存放在元素A的同一父元素下(即B为A的兄弟节点),这个时候使用position() 是最合适的;如果显示的元素B存放在DOM的最顶端或者最底端(即其父元素就是body)。这个时候用offset()是最好的。

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 事件属性绑定带参数的函数
Mar 13 Javascript
jquery实现多行文字图片滚动效果示例代码
Oct 10 Javascript
javascript中call,apply,bind的用法对比分析
Feb 12 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
BootStrap整体框架之基础布局组件
Dec 15 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
layui文件上传实现代码
May 20 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 Javascript
JS抛物线动画实例制作
Feb 24 Javascript
vue通过点击事件读取音频文件的方法
May 30 Javascript
微信小程序按钮点击跳转页面详解
May 06 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
Nov 09 Javascript
JS实现一个按钮的方法
Feb 05 #Javascript
JS继承用法实例分析
Feb 05 #Javascript
Javascript实现Web颜色值转换
Feb 05 #Javascript
JS表的模拟方法
Feb 05 #Javascript
JS的数组迭代方法
Feb 05 #Javascript
js实现照片墙功能实例
Feb 05 #Javascript
js实现仿百度瀑布流的方法
Feb 05 #Javascript
You might like
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
php实现的生成排列算法示例
2019/07/25 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
2016/12/08 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
深入理解Python3 内置函数大全
2017/11/23 Python
Python中一些深不见底的“坑”
2019/06/12 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
Oracle性能调优原则
2012/05/03 面试题
毕业生找工作的自我评价
2013/10/18 职场文书
电脑教师的自我评价
2013/12/18 职场文书
教师求职自荐信
2014/03/09 职场文书
班级口号大全
2014/06/09 职场文书
欢迎标语大全
2014/06/21 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python