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 相关文章推荐
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
Oct 31 Javascript
Javascript算符的优先级介绍
Mar 20 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
vue.js根据代码运行环境选择baseurl的方法
Feb 28 Javascript
vue.js或js实现中文A-Z排序的方法
Mar 08 Javascript
ES6关于Promise的用法详解
May 07 Javascript
在vue里使用codemirror遇到的问题
Nov 01 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
JS实现导航栏楼层特效
Jan 01 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
Sep 05 Javascript
vue路由的配置和页面切换详解
Sep 09 Javascript
浅谈JS的二进制家族
May 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
模拟xcopy的函数
2006/10/09 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python散点图实例之随机漫步
2018/08/27 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
Python如何定义一个函数
2015/09/01 面试题
高级文秘工作总结的自我评价
2013/09/28 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
学员自我鉴定
2014/03/19 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
单位计划生育责任书
2015/05/09 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
python区块链实现简版工作量证明
2022/05/25 Python