DOM:clientXXX, offsetXXX, offsetXXX系列屬性

DOM對象提供了一系列屬性讓我們快速的獲取dom元素的某些屬性,一開始接觸到clientHeight,offsetHeight,scrollHeight很容易混淆這幾個系列的屬性,今天好好梳理一遍:

一. clientXXX系列


1.clientHeight: 元素可見區(qū)高度,等于內(nèi)容高度加上下padding,對應(yīng)上圖360 = 300 + 30 + 30(和內(nèi)容是否溢出沒有任何關(guān)系)

2.clientWidth: 元素可見區(qū)寬度, 等于內(nèi)容高度加左右padding,對應(yīng)上圖360 = 300 + 30 + 30(和內(nèi)容是否溢出沒有任何關(guān)系)

3.clientLeft: 元素左邊框?qū)挾?10

4.clientTop: 元素上邊框?qū)挾?10

二. offsetXXX系列


offsetParent:是當(dāng)前dom元素的父級參照物

1.offsetHeight: 等于clientHeight加上下邊框?qū)挾?360 + 10 + 10(和內(nèi)容是否溢出沒有任何關(guān)系)

2.offsetWidth: 等于clientWidth加左右邊框?qū)挾?360 + 10 + 10(和內(nèi)容是否溢出沒有任何關(guān)系)

3.offsetLeft: 這個值和offsetParent息息相關(guān),表示當(dāng)前元素左外邊框距離父級參照物左內(nèi)邊框的位移距離(距離offsetParent的偏移距離)

4.offsetTop: 這個值和offsetParent息息相關(guān),表示當(dāng)前元素上外邊框距離父級參照物上內(nèi)邊框的位移距離(距離offsetParent的偏移距離)

三. scrollXXX系列


1.scrollHeight: 等于clientHeight,前提是內(nèi)容沒有溢出,如果內(nèi)容溢出了,它的值就等于實際內(nèi)容高度加上paddingTop

2.scrollWidth: 等于clientWidth, 前提是內(nèi)容沒有溢出,如果內(nèi)容溢出了,它的值就等于實際內(nèi)容寬度加上paddingLeft

以上2個值獲取的值都是約等于的值:假如設(shè)置了overflow:hidden,獲取到的值又變化了,并且在不同的瀏覽器中獲取到的值都是不一樣的

3.scrollLeft: 橫向滾動條卷去的寬度

4.scrollTop: 縱向滾動條卷的高度

最后封裝一個獲取元素offset距離body的方法:

functiongetOffset(el) {

varoffsetX=0,//左偏移

offsetY=0,//右偏移

parent;//父級參照物

offsetX+=el.offsetLeft;

offsetY+=el.offsetTop;

parent=el.offsetParent;

// 直到parent是body

while(parent) {

//在ie8中,offetLeft/offsetTop的值是當(dāng)前元素的外邊框到到父級參照物的外邊框,就是說offsetLeft/offsetTop的值是已經(jīng)包含邊框的寬度了

if( window.navigator.userAgent.toLocaleLowerCase.indexOf('msie 8.0')===-1){

offsetX+=parent.clientLeft;

offsetY=parent.clientTop;

}

offsetX+=parent.offsetLeft;//clientLeft是父級參照物的左邊框?qū)挾?/p>

offsetY+=parent.offsetTop;

parent=parent.offsetParent;

}

return{

offsetX:offsetX,

offsetY:offsetY

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • js中有很多“距離”,為了不會混淆這里總結(jié)一下其中部分距離 本文包括元素屬性相關(guān)的距離和鼠標(biāo)事件中的距離,廢話不多...
    faremax閱讀 1,774評論 0 2
  • HTML標(biāo)簽解釋大全 一、HTML標(biāo)記 標(biāo)簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,530評論 1 41
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 14,153評論 1 92
  • web下的高度、位置 屏幕、瀏覽器、頁面的高度寬度 NARUTOne 相信各位web開發(fā)獅們,在項目中為了搭建漂亮...
    迷緣火葉閱讀 3,828評論 0 1
  • 瀏覽器內(nèi)核及類型 瀏覽器最重要或者說核心的部分是“Rendering Engine”,可大概譯為“渲染引擎”,不過...
    zhangivon閱讀 850評論 0 1

友情鏈接更多精彩內(nèi)容