JavaScript scrollHeight

admin發表於2019-01-03

通常,DOM操作非常簡單,最讓人困擾的因素之一可能是名目繁多的DOM屬性。

不過,只要明白屬性的實質,就會讓人感覺原來是如此簡單,下面來解析scrollHeight屬性。

此屬性返回元素的內容高度,返回值是一個整數,預設單位是畫素,只讀屬性。

特別說明:屬性對內容高度進行四捨五入取整,如需精確值,推薦getBoundingClientRect方法。

搞清楚“內容高度”的實質,是理解此屬性的關鍵。

height屬性可以返回元素的高度,但是有時此高度不能真實表達元素實質容納內容的視口高度。

因為元素的內容高度可能超過元素的高度,此時,有一部分內容處於不可見狀態。

看如下圖示:

a:3:{s:3:\"pic\";s:43:\"portal/201901/03/134235a8sc9n869aasjjps.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

那麼這內容高度就很容易理解了,它包括由於出現滾動條而導致溢位不可見的部分。

千言萬語總結一句話,"內容高度"等於元素在不出現垂直滾動條情況下,恰好容納其內部所有內容所需要的高度。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
dom.scrollHeight

瀏覽器支援:

(1).IE瀏覽器支援此屬性。

(2).edge瀏覽器支援此屬性。

(3).谷歌瀏覽器支援此屬性。

(4).火狐瀏覽器支援此屬性。

(5).opera瀏覽器支援此屬性。

(6).safria瀏覽器支援此屬性。

程式碼例項:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#ant {
  width:100px;
  height:60px;
  text-align:center;
  line-height:60px;
  background:#ccc;
  margin:5px;
  padding:10px;
  border:5px solid blue;
}
</style>
<script>
window.onload = function () {
  let odiv=document.getElementById("ant");
  let num = odiv.scrollHeight;
  odiv.innerHTML = num;
}
</script>
</head>
<body>
<div id="ant"></div>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201901/03/134332zg5avpcgm3dacgbp.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

垂直方位沒有出現滾動條,那麼scrollHeight值與clientHeight值相同。

80 = 60(height)+ 10(padding-top)+ 10(padding-bottom)。

scrollHeight值等於元素height高度加上下內邊距。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#ant {
  width:120px;
  height:60px;
  text-align:center;
  line-height:60px;
  background:#ccc;
  margin:5px;
  padding:10px;
  border:5px solid blue;
  overflow:auto;
}
#inner{
  width:100px;
  height:200px;
  margin:5px;
  background-color:green;
}
</style>
<script>
window.onload = function () {
  let odiv=document.getElementById("ant");
  let oshow=document.getElementById("show");
  let num = odiv.scrollHeight;
  oshow.innerHTML = num;
}
</script>
</head>
<body>
  <div id="ant">
    <div id="inner"></div>
  </div>
  <div id="show"></div>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201901/03/134400cy22shfn5smnu1yc.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

父元素出現垂直滾動條,這說明其所容納的內容高度超出一定限度。

這個限度就是scrollHeight的返回,也就是所謂的"內容高度"。

文章前半部分已經總結過,"內容高度"等於元素在不出現垂直滾動條情況下,恰好容納其內部所有內容所需要的視口高度。程式碼修改如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#ant {
  width:120px;
  height:210px;
  text-align:center;
  line-height:60px;
  background:#ccc;
  margin:5px;
  padding:10px;
  border:5px solid blue;
  overflow:auto;
}
#inner{
  width:100px;
  height:200px;
  margin:5px;
  background-color:green;
}
</style>
<script>
window.onload = function () {
  let odiv=document.getElementById("ant");
  let oshow=document.getElementById("show");
  let num = odiv.scrollHeight;
  oshow.innerHTML = num;
}
</script>
</head>
<body>
  <div id="ant">
    <div id="inner"></div>
  </div>
  <div id="show"></div>
</body>
</html>

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201901/03/134432frydhn66dgr31c5a.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼,將父元素的height設定為210px,此時在垂直方位恰好沒有滾動條。

臨界點時,父元素客戶區高度就是scollHeight高度,值是父元素的height與上下內邊距的和。

這個高度也就是父元素的"內容高度",不過這個內容高度是其內容實質佔據的高度與父元素的上下內邊距的和。

相關文章