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下arguments,caller,callee,call,apply示例及理解
Dec 24 Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
jQuery操作cookie方法实例教程
Nov 25 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
js获取html的span标签的值方法(超简单)
Jul 26 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
基于jQuery的表单填充实例
Aug 22 jQuery
JavaScript基于对象方法实现数组去重及排序操作示例
Jul 10 Javascript
详解webpack4之splitchunksPlugin代码包分拆
Dec 04 Javascript
js实现整体缩放页面适配移动端
Mar 31 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
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新手上路(五)
2006/10/09 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
jQuery过滤选择器详解
2015/01/13 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
Web服务器框架 Tornado简介
2014/07/16 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
市优秀教师事迹材料
2014/02/05 职场文书
党员组织关系介绍信
2014/02/13 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
开票员岗位职责
2015/02/12 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers