1、position方法

jquery api地址:http://jquery.cuishifeng.cn/position.html

position方法获取匹配元素相对父元素的偏移。

2、说明

2.1 与offset()区别

.offset()是获得该元素相对于documet的当前坐标

.position()方法可以取得元素相对于父元素的偏移位置,父元素为该元素最近的而且被定位过的祖先元素。

2.2 值计算

.元素本身所占用的边框,边距和填充的大小不计

.父元素的边框和边距不计,父元素的填充计算在内

3、示例代码

<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title>jQuery position()示例</title>
<style>
html {
line-height: 1.15;
}
/*父元素--相对定位*/ .parent {
position: relative;
width: 200px;
height: 400px;
/*父元素的margin不计算在内*/
margin-top: 10px;
/*父元素的border不计算在内*/
border: 1px solid green;
/*父元素的padding计算在内*/
padding-top: 10px;
} .child-1 {
width: 100px;
height: 100px;
margin: 0 auto;
border: 1px solid #2E8DED;
} .child-2 {
width: 100px;
height: 100px;
/*子元素的margin不计算在内*/
margin: 10px auto 0;
/*子元素的border不计算在内*/
border: 1px solid #2E8DED;
/*子元素的padding不计算在内*/
padding: 10px;
}
</style>
</head> <body> <div class="parent">
<p class="child-1">
first child
</p>
<p class="child-2" id="no-2">
second child
</p>
</div>
<script src=".output/js/jquery-1.12.4.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function() {
//获取child-2子元素距离父元素的距离
console.log($('#no-2').position().top);
});
</script>
</body> </html>

4、注意

对于文字的line-height等属性,浏览器(chrome、IE、Firefox)默认大小不一致,因此不同的浏览器position()在计算尺寸时会存在不一致,因此必须保证所有浏览器一致的line-height等属性。

示例代码为没有设置line-height的例子,position()在不同的浏览器上计算出的值不一样。

<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title>jQuery position()示例</title>
<style>
html {
/*必须给予一致的设置,否则position()计算值不同*/
/*line-height: 1.15;*/
}
/*父元素--相对定位*/ .parent {
position: relative;
width: 200px;
height: 400px;
/*父元素的margin不计算在内*/
margin-top: 10px;
/*父元素的border不计算在内*/
border: 1px solid green;
/*父元素的padding计算在内*/
padding-top: 10px;
} .child-1 {
width: 100px;
height: 100px;
margin: 0 auto;
border: 1px solid #2E8DED;
} .child-2 {
width: 100px;
height: 100px;
/*子元素的margin不计算在内*/
margin: 10px auto 0;
/*子元素的border不计算在内*/
border: 1px solid #2E8DED;
/*子元素的padding不计算在内*/
padding: 10px;
}
</style>
</head> <body> <div class="parent">
文字文字
<p class="child-1">
first child
</p>
<p class="child-2" id="no-2">
second child
</p>
</div>
<script src=".output/js/jquery-1.12.4.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function() {
//获取child-2子元素距离父元素的距离
console.log($('#no-2').position().top);
});
</script>
</body> </html>

jquery position方法使用及兼容性的更多相关文章

  1. jquery offset() 与position()方法的区别

    jquery 中有两个获取元素位置的方法offset()和position(),这两个方法之间有什么异同?使用的时候应该注意哪些问题?什么时候使用offset(),什么时候又使用position()呢 ...

  2. jQuery Ajax 方法调用 Asp.Net WebService 以及调用aspx.cs中方法的详细例子

    一.jQuery Ajax 方法调用 Asp.Net WebService (引自Terry Feng) Html文件 <!DOCTYPE html PUBLIC "-//W3C//D ...

  3. Jquery 扩展方法实现原理

    JSONP原理 首先:JSON和JSONP是不一样的概念. JSON是一种数据交换格式,而JSONP是非正式传输协议. 该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回 ...

  4. jquery on方法(事件委托)

    jquery绑定事件处理函数的方法有好几个,比如:bind(),on(),delegate(),live(). 其中delegate和live都是用on实现的,效果也类似,live好像在1.7版本中已 ...

  5. html 5 data-* (dataset) 属性和 jquery data方法比较

    一些文章在介绍html 5 data-* (dataset)属性时,会提到jquery的data方法,认为data方法能够很好的利用html 5的这个特性.但实际上,二者的兼容性是很差的.下面给出一段 ...

  6. 微信自带浏览器被输入法阻挡文本框的 jQuery 解决方法 by FungLeo

    微信自带浏览器被输入法阻挡文本框的 jQuery 解决方法 by FungLeo 前言 做好了项目之后,在各种浏览器里面測试,都没有问题.非常高兴,交付后端使用.然而发如今微信自带浏览器里面,却是出现 ...

  7. jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jquery筛选方法

    jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jq ...

  8. jquery clearQueue方法 语法

    jquery clearQueue方法 语法 作用:clearQueue() 方法停止队列中所有仍未执行的函数.与 stop() 方法不同,(只适用于动画),clearQueue() 能够清除任何排队 ...

  9. jQuery Ajax方法调用 Asp.Net WebService、WebMethod 的详细实例代码

    将以下html存为ws.aspx <%@ Page Language="C#" AutoEventWireup="true" %> <scri ...

随机推荐

  1. Hibernate中的Session缓存问题

    1. Session 缓存: 1) . 在 Session 接口的实现中包括一系列的 Java 集合 , 这些 Java 集合构成了 Session 缓存 .          它用于存放 Sessi ...

  2. .NET的堆和栈03,引用类型对象拷贝以及内存分配

    在" .NET的堆和栈01,基本概念.值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配.我们知道:当执行一个方法的时 ...

  3. Extjs NumberField 开始值 不能大于 结束值

    Ext.apply(Ext.form.VTypes,{ numberrange: function(val, field) { var num = parseFloat(val); if (field ...

  4. POJ--2570--Fiber Network【floyd+位运算】

    题意:一些公司决定搭建一些光纤网络.单向的,假设从第一点到第二点,有ab两个公司能够搭建,第二点到第三点有ac两个公司能够搭建,第一点到第三点有d公司能够搭建,则第一点到第三点有a.d两个公司能够搭建 ...

  5. DWZ验证表单规则一览

    <form onsubmit="return validateCallback(this)" class="pageForm" action=" ...

  6. [Android Pro] Swift 3.0多线程

    本文只介绍Grand Central Dispath(GCD) 中央调度 个人认为一个GCD就够用了,可能是改版或是其他的在找之前写的多线程方法时发现不能用了,看文档之后发现改了,现在看上去更加简单易 ...

  7. NLP国内研究方向机构导师

    基础研究 词法与句法分析:李正华.陈文亮.张民(苏州大学) 语义分析:周国栋.李军辉(苏州大学) 篇章分析:王厚峰.李素建(北京大学) 语言认知模型:王少楠,宗成庆(中科院自动化研究所) 语言表示与深 ...

  8. OpenCV学习(16) 细化算法(4)

    本章我们学习Rosenfeld细化算法,参考资料:http://yunpan.cn/QGRjHbkLBzCrn 在开始学习算法之前,我们先看下连通分量,以及4连通性,8连通性的概念: http://w ...

  9. C++ vector 删除符合条件的元素

    C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法. C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的 ...

  10. go语言基础之go猜数字游戏

    1. 产生一个随机的4位数 示例1: package main import "fmt" import "math/rand" import "tim ...