js中offsetHeight、clientHeight、scrollHeight等相關屬性區分總結


今天再次遇到了offset***、client***、scroll***的這三類屬性的問題,總是混淆,現歸納總結如下:

大體上來說可以這樣理解:

client***屬性(clientWidth、clientHeight):

  表示元素可以看到內容的可見區域部分,一般是最后一個對象條以下到狀況欄以上的這個區域,與頁面內容無關。且它會直接返回屬性的數值大小,可直接進行計算。分開說的話也可以這樣理解:若元素大小小於父元素,大小包括padding、content部分,不包括border;若元素大小大於父元素,則表示可以看到的部分的高或寬。

 

offset***屬性(offsetWidth、offsetHeight、offsetTop、offsetLeft):

  對於offsetWidth和offsetHeight,都表示當前對象的寬度/高度。offsetWidth與style.widtht的區別是:若對象的寬度設定值為百分百寬度,無論頁面變大或變小,style.width都返回此百分比;而offsetWidth則返回頁面中對象的寬度值而不是百分比。

  對於offsetTop和offsetLeft,都表示當前元素對象相對於其定位元素的垂直/水平偏移量。

 

scroll***屬性(scrollTop、scrollLeft、scrollHeight、scrollWidth): 

  scroll是滾動的意思,也就是scrollWidth、scrollHeight屬性代表元素對象真實的寬高,即使有一部分看不到;scrollTop、scrollLeft代表元素對象最頂端/最左端到對象到當前窗口顯示的局限內的距頂部/左邊距的間隔,也是元素垂直/水平滾動了的距離,或者是元素卷簾卷走的視覺中看不到的部分。

  有兩個關系式是(當所有元素的margin均初始化設為0時):

  scrollHeight - scrollTop = clientHeight:當這兩個條件成立時,也就代表垂直滾動條走到底了

  scrollWidth - scrollLeft = clientWidth:當這兩個條件成立時,也就代表水平滾動條走到底了

 

以上就是本人對以上屬性元素的理解總結,如有錯誤之處,煩請指出,大家共同進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM