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 相关文章推荐
利用jQuery接受和处理xml数据的代码(.net)
Mar 28 Javascript
JQuery实现倒计时按钮具体方法
Nov 14 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
详解AngularJS中的表格使用
Jun 16 Javascript
JS获取及验证开始结束日期的方法
Aug 20 Javascript
vue组件的写法汇总
Apr 12 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
May 27 Javascript
JS异步处理的进化史深入讲解
Aug 25 Javascript
vue-cli3 取消eslint校验代码的解决办法
Jan 16 Javascript
vue 调用 RESTful风格接口操作
Aug 11 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python中将字典转换为列表的方法
2016/09/21 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
什么是组件架构
2016/05/15 面试题
学生党员思想汇报范文
2014/01/09 职场文书
大学生就业策划书范文
2014/04/04 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书