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 相关文章推荐
PJ Blog修改-禁止复制的代码和方法
Oct 25 Javascript
js event事件的传递与冒泡处理
Dec 06 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
Sep 10 Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
Javascript冒泡排序算法详解
Dec 03 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
Angular设置title信息解决SEO方面存在问题
Aug 19 Javascript
JavaScript严格模式详解
Jan 16 Javascript
JavaScript类的继承操作实例总结
Dec 20 Javascript
微信小程序实现跳转的几种方式总结(推荐)
Apr 24 Javascript
Vue路由管理器Vue-router的使用方法详解
Feb 05 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
这段js代码得节约你多少时间
2011/12/20 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
小程序云开发实战小结
2018/10/25 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
python 实现归并排序算法
2012/06/05 Python
python打开使用的方法
2019/09/30 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
python实现批量转换图片为黑白
2020/06/16 Python
关键字final的用法
2013/10/02 面试题
实习销售业务员自我鉴定
2013/09/21 职场文书
毕业生造价工程师求职信
2013/10/17 职场文书
函授大专自我鉴定
2013/11/01 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书