摘要:前者計算元素的大小后者兩者返回元素相對元素的偏移量返回一個元素的布局寬度計算方式設定的如果存在垂直滾動條返回一個元素的布局高度計算方式設定的如果存在水平滾動條大家看到是否很熟悉在盒子模型中提及在盒模型中其盒子大小的計算方式也是一樣下面我們來
offsetWidth、Height、Top、Left 、offsetParent
前者計算元素的大小, 后者兩者返回元素相對 offsetParent 元素的偏移量.
offsetWidth返回一個元素的布局寬度;
計算方式:
content width(CSS設定的width) + padding + border + scrollBarWidth 如果存在垂直滾動條(scrollbar)offsetHeight
返回一個元素的布局高度;
計算方式:
content height(CSS設定的height) + padding + border + scrollbarHeight 如果存在水平滾動條(scrollbar)
大家看到 content + padding + border 是否很熟悉, 在盒子模型中提及, 在IE盒模型中,其盒子大小的計算方式也是一樣.
下面我們來看看 offsetTop、offsetLeft 在了解它們兩之前,先來了解下 offsetParent
offsetParent可以理解為偏移的基準, 這有點類似定位屬性中(absolute以最近的祖先元素容器且設置了定位屬性的元素來進行位置偏移.)
什么樣的元素為 offsetParent ?
擁有定位屬性的元素
dispaly 為 table 或 table cell
默認情況下根元素
依次從內往外找, 如果沒有, 默認就是已根元素作為 offsetParent 也就是偏移的基準.
當元素設置屬性 display: none, 則它相應的 offsetParent屬性返回值為 null.
注意:
如果元素為隱藏的(該元素或其祖先元素的 style.display 為 "none"),或者該元素的 style.position 被設為 "fixed", 則該 offsetParent 屬性返回 null。在 IE 9 中 display:none 無影響.
offsetLeft返回一個元素(border邊框)到 offsetParent 元素左邊界(邊界可能為邊框或內邊距)的距離.offsetTop
返回一個元素(border邊框)到 offsetParent 元素上邊界(邊界可能為邊框或內邊距)的距離.
下面我們來實戰一下吧
這里分兩種情況:
當不存在定位屬性時: IE、Edge、Chrome、Firefix 呈現值不一樣:
IE、Edge 中:
offsetLeft = box margin + body padding + body border + body margin + html padding + html border + html margin
可以理解為相對于視口的偏移
Chrome 中:
offsetLeft = box margin + body padding + body border + html padding + html border
可以理解為相對于HTML元素邊框(包含邊框)
Firefix 中:
offsetLeft = box margin + body padding + body border + html padding
可以理解為相對于HTML元素邊框(不包含邊框).
其實這里我是有疑問的, 為什么沒有指定定位等屬性情況下, ele.offsetParent === document.body 卻為 true , 從結果來看實際偏移計算又是依據HTML或視口來的 , 如果有知道可以告知下.
當存在定位屬性時, 更改下HTML代碼, 如下:
IE、Edge、Firefox 中:
offsetLeft = box margin + body padding + body border + html padding
可以理解為相對于HTML邊框偏移量(不包含邊框)
Chrome 中:
offsetLeft = box margin + body padding + body border + html padding + html border
可以理解為相對于HTML邊框偏移量(含邊框)
如果不存在邊框的話,在IE、Edge、Chrome、Firefox呈現方式一樣的.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/114856.html
摘要:前者計算元素的大小后者兩者返回元素相對元素的偏移量返回一個元素的布局寬度計算方式設定的如果存在垂直滾動條返回一個元素的布局高度計算方式設定的如果存在水平滾動條大家看到是否很熟悉在盒子模型中提及在盒模型中其盒子大小的計算方式也是一樣下面我們來 offsetWidth、Height、Top、Left 、offsetParent 前者計算元素的大小, 后者兩者返回元素相對 offsetPar...
摘要:前者計算元素的大小后者兩者返回元素相對元素的偏移量返回一個元素的布局寬度計算方式設定的如果存在垂直滾動條返回一個元素的布局高度計算方式設定的如果存在水平滾動條大家看到是否很熟悉在盒子模型中提及在盒模型中其盒子大小的計算方式也是一樣下面我們來 offsetWidth、Height、Top、Left 、offsetParent 前者計算元素的大小, 后者兩者返回元素相對 offsetPar...
摘要:因為一旦我們給父元素設置了會影響文檔流。是指當前元素相對于父級參照物的偏移量。在標準瀏覽器中是指當前元素的左邊框的外沿到父級參照物邊框的內沿,如上圖中的,,所示。盒子上邊框的高度。 接下來我們依然討論盒模型中的offset系列:offsetWidth/offsetHeight、offsetLeft/offsetTop、offsetParent showImg(https://segme...
摘要:在這里一次性做個總結,以用來判斷元素是否在可視區域以及用原生簡單實現懶加載。被隱藏在內容區域左側的像素數。比如上篇文章文字跑馬燈項目中的使用戳此跳轉小結只讀屬性,不包括滾動條。 個性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經常需要計算元素的大小或者所在頁面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個關鍵字的出...
摘要:在這里一次性做個總結,以用來判斷元素是否在可視區域以及用原生簡單實現懶加載。被隱藏在內容區域左側的像素數。比如上篇文章文字跑馬燈項目中的使用戳此跳轉小結只讀屬性,不包括滾動條。 個性簽名: 生如夏花,逝如冬雪;人生如此,何悔何怨。 前言: 經常需要計算元素的大小或者所在頁面的位置,offsetWidth,clientWidth,scrollWidth,scrollTop這幾個關鍵字的出...
閱讀 2451·2021-11-22 09:34
閱讀 3063·2021-10-25 09:43
閱讀 1974·2021-10-11 10:59
閱讀 3360·2021-09-22 15:13
閱讀 2322·2021-09-04 16:40
閱讀 417·2019-08-30 15:53
閱讀 3186·2019-08-30 11:13
閱讀 2602·2019-08-29 17:30