弄清楚煩人的clientHeight與clientTop、scrollHeight與scrollTop、offsetHeight與offsetTop與JQuery中的innerHeight()與...

clientHeight與clientTop

  • clientHeight

包括 padding 但不包括 border、水平滾動(dòng)條margin的元素的高度。對(duì)于行內(nèi)元素這個(gè)屬性一直是0。單位為px,只讀元素。

client-MDN
  • clientTop

元素頂部邊框的寬度單位為px,可以理解為border-top。如沒有設(shè)置 border-top的值,則 element.clientTop 的值為 0

client-MDN

注意如下情況:
??

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>clientHeight</title>
  <style>
    div#ct {
      width: 250px;
      height: 250px;
      border: 15px solid blue;
      text-align: center;
      background-color: pink;
      margin: 100px;
      padding: 20px;
      overflow: scroll;
    }
    div#item {
      color: red;
      background-color: #666;
      width: 400px;
      height: 1000px;
    }
  </style>
</head>
<body>
 <div id="ct">
   <div id="item">Helo World!</div>
</div>
</body>
</html>
clientHeight

clientHeight 字面意思即為自身的高度, 在上例 容器內(nèi)部的子元素的高度 高于父容器,因?yàn)?overflow: scroll;所以出現(xiàn)滾動(dòng)條。但元素本身的clientHeight 是不受這些因素影響的(這一點(diǎn)容易點(diǎn)混淆)。所以 div#ct.cilentHeight 與 div#item.clientHeight還是開始設(shè)置樣式是的值。

Element.getBoundingClientRect()

返回元素的大小及其『相對(duì)于視口左上角(其中width height不是相對(duì)于左上角)』的位置(且結(jié)果會(huì)保留小數(shù)比clientHeight精確)。

Element.getBoundingClientRect()

element.getBoundingClientRect()包括 top right bottom left height width

  • top right bottom left: 相對(duì)于視口左上角的原點(diǎn)位置,不包括 margin 的值,但是會(huì)包括滾動(dòng)條
  • height width: height 矩形盒子的高度。 width矩形盒子的寬度, 且存在width = right - left height = bottom - top

scrolltHeight與scrollTop

  • scrollHeight

等于在沒有垂直滾動(dòng)條 的情況下,為所需要填充內(nèi)容視圖的最小值,包括padding(無論可見還是不可見)。 其元素的本身(而不是它的父容器)的 clientHeight 等于 scrollHeight

scrollHeight
  • scrollTop

元素的頂部到視口可見內(nèi)容的頂部 的距離的度量,前提是這個(gè)元素的本身有垂直滾動(dòng)條,否則 scrollTop的值為 0

scrollTop

注: 如果垂直方向的scrolllBar存在,且當(dāng)前元素滾動(dòng)到底:

element.scrollHeight - element.scrollTop === element.clientHeight
// true

offsetHeight與offsetTop

  • offsetHeight(高度偏移)

元素CSS高度的衡量標(biāo)準(zhǔn),包括 border padding 還包括 水平方向上的 scrollBar。不包括偽元素的高度

offsetHeight = content + padding + border + 水平方向的scrollBar

offsetHeight

  • offsetTop(頂部偏移)

當(dāng)前元素相對(duì)于其 當(dāng)前最接近的父輩元素的頂部?jī)?nèi)邊距的距離。

也就是當(dāng)前元素的 border-top(不包括border的值) 到 最接近的 父元素的margin-top邊緣的距離

offsetTop

JQuery中的 innerHeight與outerHeight

詳情如圖所示

JQuery中的 innerHeight與outerHeight

參考:

MDN

nsIDOMClientRect-MDN

stack overflow-What is offsetHeight, clientHeight, scrollHeight?

medium-Difference between offsetHeight, clientHeight and scrollHeight

stack overflow- What is difference between width, innerWidth and outerWidth, height, innerHeight and outerHeight in jQuery - Stack Overflow


版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主許可不得轉(zhuǎn)載

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

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

  • 現(xiàn)在,我算是真的開始進(jìn)行著瑜伽的生活了。很高興在這個(gè)年齡遇到最適合自己的她--我的私教。她教給我的不止瑜伽體式,不...
    果木子閱讀 288評(píng)論 0 0
  • 今天學(xué)校運(yùn)動(dòng)會(huì),答應(yīng)寶貝去學(xué)校一同參加,總之,這一天很興奮,下午放學(xué)去醫(yī)院陪姥爺舅舅吃飯,和小朋友約好晚上一...
    翰悅寧心閱讀 337評(píng)論 0 0
  • 在農(nóng)村,二十歲且已經(jīng)不在上學(xué)的女子大多已嫁作人婦,至少我的許多女性朋友都是這樣。但我從來沒收到過一份請(qǐng)柬,就連半個(gè)...
    明_熙閱讀 1,638評(píng)論 91 48
  • 年底了,仿佛各個(gè)機(jī)構(gòu)都在開會(huì)。 一大早來市區(qū)辦事。他們這兒也是排了一天滿滿的會(huì)??蒲胁块_完了財(cái)務(wù)部開。部門層開完了...
    劉子京閱讀 636評(píng)論 0 1
  • 唐詩是中國古代文化的寶庫,而盛唐詩人張若虛的《春江花月夜》則是這座寶庫里的一顆璀璨明珠,被近代著名詩人聞一多先生譽(yù)...
    山色歸讀閱讀 21,991評(píng)論 67 269

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