JavaScript offset家族
(1)offsetWith & offsetHeight 用來獲取盒子在頁面上的實際佔有的大小
obj.style.width只能讀取或者寫入行內樣式,對於非行內樣式,它無法設定和讀取
1.obj.offsetWith 寬
obj.offsetHeight 高
2.obj.style.width 與 obj.offsetWidth的區別
①obj.style.width屬性是字串,讀取出來的資料是帶有"px"的(不能直接做加減乘除的運算)
而obj.offsetWidth
②obj.style.width是可讀可寫的
offsetWidth是隻讀屬性,不能修改。
③obj.style.width只能讀取或者寫入行內樣式,對於非行內樣式,它無法設定和讀取
offsetWidth可以隨時讀取當前盒子的寬度,無論是行內樣式還是非行內樣式
注意:offsetWidth = width + padding + border
(2)offsetLeft & offsetTop 盒子與上級盒子的距離
注意,一定不能使用obj.style.left來計算距離
①obj.style.left,只能讀寫行內樣式
offsetLeft能讀取任何地方設定的樣式
②obj.style.left是個字串,帶有“px”字尾
offsetLeft是數值型別,能直接做算數運算
③offsetLeft是隻讀的,obj.style.left是可讀可寫的
④offsetLeft讀取的是距離上一級聲明瞭定位方式的盒子的距離,如果沒有任何1級父盒子聲明瞭定位方式
那麼offsetLeft讀取的就是距離
⑤offsetLeft讀取到的是邊框到邊框的距離(含有padding)
注意:只有offsetLeft和offsetTop,沒有offsetRight和offsetBottom
(3)offsetParent
offsetParent獲取當前盒子的父級盒子的DOM物件
跟父級盒子有沒有宣告定位方式有直接關係。
如果父級盒子聲明瞭定位方式,那麼offsetParent讀取到的就是離他最近的那個聲明瞭定位的上級盒子。
如果所有的上級盒子都沒晟敏定位,那麼offsetParent讀出來的就是body標籤物件
parentNode得到的永遠是直接父節點