jQuery的position(),offset(),scrollTop()/scrollLeft()

---恢复内容开始---

jquery定位函数:offset,position,scrollTop/scrollLeft

(1)offset:获取当前元素相对于文档的偏移。只对可见元素有效。

(2) position:获取元素相对于最近的一个position为relative or
absolute的元素的祖父节点的相对偏移

(3)scrollTop()/scrollLeft()是分别获取元素滚动条距顶端的距离。

$(selector).offset()与$(selector).position()都返回包含top、left属性的对象
top/left的值为number

scrollTop() /scrollLeft()的返回值也为number类型 scroll()返回该对象本身

 参考例子

测试代码:




<body height="1500px">

<div style="position:relative;margin-top:1000px;height:300px;border:1px solid #0C6;">

<p style="margin:50px;">compute my height</p>

</div>

</body>

在firebug中得到的结果为:




$(‘div‘).offset()

top:1000;left:8;  //浏览器默认body 与视窗margin 为8px

$(‘p‘).offset()

top:1051;left:9;  

$(‘div‘).scrollTop()=0;$(‘div‘).scrollLeft()=0;




$(‘p‘).position();<br>top:0 ;left:0

这个结果感觉很奇怪,第一二个结果还是意料之中,但是第三个是将滚动条拉到最下方的时算出的结果。

奇怪的事情出现了。




<body style="height:1500px;">

<div style="position:relative;margin-top:1000px;height:300px;">

<p style="padding:50px;">compute my height</p>

</div>

</body>




$(‘div‘).offset()

top:1000;left:8;

$(‘p‘).offset()

top:1000;left:8;

$(‘div‘).scrollTop()=0;$(‘div‘).scrollLeft()=0;




$(‘p‘).position();<br>top:0 ;left:0;




 

padding不起作用了!!! 盒子模型 左至右 margin-left |border-left  padding-left width
  padding-right|border-right margin-right

而offset()position() 读取的值是margin-left(margin-top)+border-left(border-top)
  padding不在其内

继续做修改:




<body style="height:1500px;">

<div style="position:relative;margin-top:1000px;height:300px;border:1px solid #666;">

<p style="padding:50px;">compute my height</p>

</div>

</body>




$(‘div‘).offset()<br>top:1000;left:8;<br>

 $(‘p‘).offset()<br> top:1017;left:9; <br> //div>p会产生8px的margin

$(‘div‘).scrollTop()=0;<br>$(‘div‘).scrollLeft()=0;<br>

$(‘p‘).position();<br>top:0 ;left:0;


****行内元素会默认1px间隔

---恢复内容结束---

时间: 2024-10-01 01:28:31

jQuery的position(),offset(),scrollTop()/scrollLeft()的相关文章

jQuery方法position()与offset()区别

参考别人写得比较明白的,红色部分为重点吧: 使用jQuery获取元素位置时,我们会使用position()或offset()方法,两个方法都返回一个包含两个属性的对象-左边距和上边距,它们两个的不同点在于位置的相对点不同. 可以看看下边的图: 从图中我们可以大体看出两者的区别. position()获取相对于它最近的具有相对位置(position:relative)的父级元素的距离,如果找不到这样的元素,则返回相对于浏览器的距离. offset()始终返回相对于浏览器文档的距离,它会忽略外层元素

2015第10周三jquery ui position

jQuery UI API - .position() 所属类别 方法重载(Method Overrides) | 方法(Methods) | 实用工具(Utilities) 用法 描述:相对另一个元素定位一个元素. 返回:jQuery 版本新增:1.8 .position( options ) 参数 类型 描述 options Object my(默认值:"center")类型:String描述:定义被定位元素上对准目标元素的位置:"horizontal vertical&

JS下offsetLeft,style.left,以及jQuery中的offset().left,css(&quot;left&quot;)的区别。

JS下offsetLeft,style.left,以及jQuery中的offset().left,css("left")的区别. JS下的offsetLeft和style.left,以及jquery的css("left"),对定位的理解相似,如果父元素中有定位元素,都是相对于上一个定位元素(position不为static)定位. 值得一提的是如果没有已经定位的父元素,那么offsetLeft指向的是文档(document)的左边缘,而style.left与css(

jQuery-css()、height()、width()、offset()、position()、scrollTop()、scrollLeft()

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .box{ width: 200px; height: 200px; position: relative; border:1px solid

jquery-get-data(width,height,position,(top,left),scrollTop,scrollLeft)获取数据

获取尺寸 如下: heigh([val|fn]) width([val|fn]) innerHeight() innerWidth() outerHeight([soptions]) outerWidth([options]) 下面就一一介绍(这里多说一下jquery中很多都是既可以返回匹配元素的值,又可以设置匹配元素值) height()取得匹配元素当前计算的高度值(px). width()取得第一个匹配元素当前计算的宽度值(px). /此2个方法对可见和隐藏元素均有效.另外这个补白就是pad

jquer属性 offset、position、scrollTop

尺寸操作 1.获取宽高 a) jq对象.height/width () :只有获取高度/宽度 尺寸,不包括padding和margin 和 border 2.设置宽度 a) Jq对象 . height/ width("200px"); b) px可加可不加,不加不需要写双引号 jQuery(function(){ //获取宽度 $("button").eq(0).click(function(){                 和js offsetWidth 不一

jQuery中animate与scrollTop、offset().top实例

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

Jquery中的offset()和position()深入剖析(元素定位)

先看看这两个方法的定义. offset(): 获取匹配元素在当前视口的相对偏移. 返回的对象包含两个整形属性:top 和 left.此方法只对可见元素有效. position(): 获取匹配元素相对父元素的偏移. 返回的对象包含两个整形属性:top 和 left.为精确计算结果,请在补白.边框和填充属性上使用像素单位.此方法只对可见元素有效. 真的就这么简单吗?实践出真知. 先来看看在jquery框架源码里面,是怎么获得position()的: 1 // Get *real* offsetPar

jQuery中position()与offset()区别

使用jQuery获取元素位置时,我们会使用position()或offset()方法,两个方法都返回一个包含两个属性的对象-左边距和上边距,它们两个的不同点在于位置的相对点不同. 可以看看下边的图: 从图中我们可以大体看出两者的区别.position()获取相对于它最近的具有相对位置(position:relative)的父级元素的距离,如果找不到这样的元素,则返回相对于浏览器的距离.offset()始终返回相对于浏览器文档的距离,它会忽略外层元素. <div id="outer"