我們知道紅樓夢中 有四大家族
在JS當中也有幾大家族 現在介紹一下offset家族
offset的作用
方便獲取元素尺寸
offsetWidth offsetHeight
得到對象的寬度和高度(自己的,與他人無關)
offsetWidth
: width
+ border
+ padding
div {
width:220px;
border-left:2px solid red;
padding:10px;
}
div的.offsetWidth = 220 + 2(只有左邊框) + 20
注意:為什么不用 div.style.width
因為它只能得到行內的數值
offsetLeft offsetTop
如果父級都沒有定位則以body 為準
這里的父級指的是所有上一級 不僅僅指的是 父親 還可以是 爺爺 曾爺爺 曾曾爺爺。。。。
offsetLeft 從父級的padding 開始算 父親的border 不算
總結一下: 就是子盒子到定位的父盒子邊框到邊框的距離
offsetParent
返回該對象的(帶有定位)父級 不一定是親的爸爸
它和 parentNode
這個返回親父親 不管父親是否帶有定位 有所區別
- 如果當前元素的父級元素沒有進行CSS定位(position為absolute或relative),
offsetParent
為body。 - 如果當前元素的父級元素中有CSS定位(position為absolute或relative),
offsetParent
取最近的那個父級元素。
offsetTop style.top 以及 offsetLeft和style.left 的區別
offsetLeft
可以返回沒有定位盒子的距離左側的位置。 而style.top
不可以 只有定位的盒子 才有 left top rightoffsetTop
返回的是數字,而style.top
返回的是字符串,除了數字外還帶有單位:px。
style.left = 300px parseInt(300px)
結果 300
parseInt(style.left) + parseInt(style.left)offsetTop
只讀,而style.top
可讀寫。如果沒有給 HTML 元素指定過
top
樣式,則style.top
返回的是空字符串。最重要的區別
style.left
只能得到 行內樣式 而offsetLeft 則都可以獲取到