position() 方法返回匹配元素相對于父元素的位置(偏移)。
所謂"被定位的元素",就是元素的CSS position屬性值為absolute、relative或fixed(只要不是默認(rèn)的static即可)。
該方法返回的對象包含兩個整型屬性:top 和 left,以像素計。
此方法只對可見元素有效。
必須在他本身設(shè)置left與top值,該物體還必須顯示不可以隱藏,必須要有定位。
與offset()不同的是:position()返回的是相對于被定位的祖輩元素的坐標(biāo),offset()返回的是相對于當(dāng)前文檔的坐標(biāo)。此外,position()函數(shù)無法用于設(shè)置操作。如果當(dāng)前元素的祖輩元素全部都是默認(rèn)定位(static),那么該函數(shù)返回的偏移位置與offset()函數(shù)相同。
h2的祖輩元素全部為默認(rèn)定位,則position()返回的偏移位置和offset()函數(shù)一致。
html代碼
<div><h1>zz</h1></div>
<p>hh</p>
<h2>ssss</h2>
css代碼
*{
margin:0;
padding:0;
}
div{
width:100px;
height:100px;
background:red;
margin:500px auto;
position:absolute;
left:20px;
top:20px;
}
p{
display:none;
position:relative;
left:50px;
top:50px;
}
h1{
position:relative;
left:10px;
top:10px;
}
h2{
left:50px;
top:100px;
}
js代碼
var a=$("div").position();
var a1= $("div").offset();
console.log(a.left);//20
console.log(a.top);//20
console.log(a1.left);//441
console.log(a1.top);//520
//隱藏時無論position還是offset都無法獲取到left、top值
var b=$("p").position();
var b1=$("p").offset();
console.log(b.left);//0
console.log(b.top);//0
console.log(b1.left);//0
console.log(b1.top);//0
var c=$("h1").position();
var c1=$("h1").offset();
console.log(c.left);//10
console.log(c.top);//10
console.log(c1.left);//451
console.log(c1.top);//530
//祖輩元素全部為默認(rèn)定位,則position()返回的偏移位置和offset()函數(shù)一致。
var d=$("h2").position();
var d1=$("h2").offset();
console.log(d.left);//0
console.log(d.top);//1100
console.log(d1.left);//0
console.log(d1.top);//1100