先看看這兩個方法的定義。 
offset(): 
獲取匹配元素在當前視口的相對偏移。 
返回的對象包含兩個整形屬性:top 和 left。此方法只對可見元素有效。 
position(): 
獲取匹配元素相對父元素的偏移。 
返回的對象包含兩個整形屬性:top 和 left。為精確計算結(jié)果,請在補白、邊框和填充屬性上使用像素單位。此方法只對可見元素有效。 
真的就這么簡單嗎?實踐出真知。 
先來看看在jquery框架源碼里面,是怎么獲得position()的: 
 代碼如下: 
// Get *real* offsetParent 
var offsetParent = this.offsetParent(), 
// Get correct offsets 
offset = this.offset(), 
parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset(); 
// Subtract element margins 
// note: when an element has margin: auto the offsetLeft and marginLeft 
// are the same in Safari causing offset.left to incorrectly be 0 
offset.top -= num( this, 'marginTop' ); 
offset.left -= num( this, 'marginLeft' ); 
// Add offsetParent borders 
parentOffset.top += num( offsetParent, 'borderTopWidth' ); 
parentOffset.left += num( offsetParent, 'borderLeftWidth' ); 
// Subtract the two offsets 
results = { 
top: offset.top - parentOffset.top, 
left: offset.left - parentOffset.left 
}; 
 
點擊下面的頁面可以測試一下兩個的區(qū)別: 
  [Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行] 
通過test1頁面測試的結(jié)果可以得出這個結(jié)論: 
使用position()方法時事實上是把該元素當絕對定位來處理,獲取的是該元素相當于最近的一個擁有絕對或者相對定位的父元素的偏移位置。             
新聞熱點
疑難解答
圖片精選