1. 程式人生 > >JS學習筆記 offset家族

JS學習筆記 offset家族

JS有很多操作是需要尺寸的具體值的,只靠人工的去計算效率是非常低的,但是offSet家族的存在就完美的解決了這個問題,下面我們來看看它常見的幾個用法:

1.offsetHeight和offsetWidth

offsetHeight  = 內容 + 內邊距 + 邊框,offsetWidth也是這個計算公式,這兩個可以準確的計算當前盒子的元素大小

2.offsetLeft和offsetTop

它們會返回當前盒子距離帶有定位的父元素的尺寸長度,如果沒有父元素沒有定位,那麼它會一級一級往上找,一直到找到帶定位的元素或者找到body。

注意:返回的長度不包含border的長度,也就是它們是計算

子元素最外邊框到父元素最內邊框的距離

3.offsetParent

1、返回改物件的父級 (帶有定位)

         如果當前元素的父級元素沒有進行CSS定位 (position為absolute或  relative,fixed),    offsetParent為body。

2、如果當前元素的父級元素中有CSS定位      (position為absolute或 relative,fixed),    offsetParent取最近的那個父級元素。

4.offetxxx和style.xxx的區別

a) style.left只能獲取行內的,而offsetLeft則可以獲取到所有的;

b) offsetLeft 可以返回沒有定位盒子距離左側的位置;而style.left不可以,其只能返回有定位盒子的left;
c) offsetLeft 返回的是數字,而 style.left 返回的是字串,除了數字外還帶有單位:px;
注意:可以用parseInt進行轉化;比如:styleLeft='300px' ---> parseInt(styleLft) ---> 300
d) offsetLeft是隻讀的,而style.left是可讀寫;
e) 如果沒有給 當前 元素指定過 top 樣式,則 style.top 返回的是空字串,而offsetXXX就算沒有設定也會返回

很明顯offset家族就是為子絕父相服務的。