快捷导航
查看: 7561|回复: 7

[分享] scrollHeight和scrollWidth属性

[复制链接]
发表于 2013-8-16 21:53:22 | 显示全部楼层 |阅读模式
本帖最后由 antzone 于 2017-7-9 17:31 编辑

scrollWidth和scrollHeight属性:
首先强调一点,这两个属性是非常简单的,只是在DOM操作中有几个相似的属性,所以才感觉理解起来有点困难。
scrollHeight和scrollWidth返回值分别是元素的实际高度和实际宽度,不包括滚动条所占用的空间。
关于clientHeight和clientWdith的用法可以参阅clientHeight属性一章节。标题中两个属性的更多内容可以参阅以下两篇文章:
(1).scrollHeight可以参阅JavaScript scrollHeight一章节。
(2).scrollWidth可以参阅JavaScript scrollWidth一章节。
代码实例如下:
[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
#antzone {
  width:100px;
  height:100px;
  background:#ccc;
  margin:5px;
  padding:10px;
  border:15px  solid blue;
  overflow:auto;
}
</style>
<script>
window.onload = function () {
  var str = "";
  str = antzone.scrollHeight + "<br/>";
  str = str + antzone.clientHeight;
  antzone.innerHTML = str;
}
</script>
</head>
<body>
<div id="antzone">
</div>
</body>
</html>

由上面的代码可以看出scrollHeight属性值等于height+padding-top+padding-bottom。
上面例子div的内容没有超出它的高度,效果和clientHeight一样的,并没有体现出此属性的作用。
[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
#antzone {
  width:100px;
  height:100px;
  background:#ccc;
  margin:5px;
  padding:10px;
  border:15px  solid blue;
  overflow:auto;
}
#inner {
  width:30px;
  height:150px;
  background:green;
}
</style>
<script>
window.onload = function () {
  var str = "";
  str = antzone.scrollHeight + "<br/>";
  str = str + antzone.clientHeight;
  show.innerHTML = str;
}
</script>
</head>
<body>
<div id="show"></div>
<div id="antzone">
  <div id="inner">蚂蚁部落</div>
</div>
</body>
</html>

上面的代码中clientHeight属性值依然是120。
scrollHeight返回的是元素的实际内容的宽度,值=子元素的width值+父元素的padding-top+父元素padding-bottom。
[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
#antzone {
  width:100px;
  height:100px;
  background:#ccc;
  margin:5px;
  padding:10px;
  border:15px  solid blue;
  overflow:auto;
}
#inner {
  width:150px;
  height:30px;
  background:green;
}
</style>
<script>
window.onload = function () {
  var str = "";
  str = antzone.scrollHeight + "<br/>";
  str = str + antzone.clientHeight;
  show.innerHTML = str;
}
</script>
</head>
<body>
<div id="show"></div>
<div id="antzone">
  <div id="inner">蚂蚁部落</div>
</div>
</body>
</html>

看到没有,scrollHeight的高度是不包括滚动条的占用的空间,在谷歌浏览器下滚动条的厚度是17px,其他浏览器没有测试。
scrollHeight属性已经讲的很清楚了,scrollWidth就不用多讲了,都是同样的道理。
发表于 2013-8-19 13:38:27 | 显示全部楼层
之前做遮罩层用到过一些属性,现在先记录一下这个!
发表于 2016-10-3 10:33:02 | 显示全部楼层
版主,这个知识点是在是看不懂,能够给出具体的算法公式吗?
发表于 2016-10-3 10:37:14 | 显示全部楼层
dwy123 发表于 2016-10-3 10:33
版主,这个知识点是在是看不懂,能够给出具体的算法公式吗?

应该理解scrollWidth和scrollHeight是怎么回事
而不是单纯找一个公式
发表于 2016-12-12 21:10:40 | 显示全部楼层
scrollHeight和scrollWidth返回值分别是元素的实际高度和实际宽度,不包括滚动条所占用的空间。
这句话简直是太经典了,直接让我明白了这两个属性是怎么回事
发表于 2016-12-12 22:46:45 来自手机 | 显示全部楼层
dwy123 发表于 2016-10-3 10:33
版主,这个知识点是在是看不懂,能够给出具体的算法公式吗?

上面文章其实已经给出了
发表于 2016-12-13 17:39:30 | 显示全部楼层
和爱卿 发表于 2016-12-12 21:10
scrollHeight和scrollWidth返回值分别是元素的实际高度和实际宽度,不包括滚动条所占用的空间。
这句话简 ...

同感,这句话最经典
发表于 2016-12-18 10:22:24 | 显示全部楼层
scrollHeight属性介绍的好

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|手机版|小黑屋| ( 鲁ICP备10022556号-3 )

GMT+8, 2017-8-21 12:38 , Processed in 0.090349 second(s), 23 queries .

Powered by Discuz! X3.2 Licensed

Copyright © 2012-2017 Design: 蚂蚁部落

快速回复返回顶部 返回列表