1、元素视图属性

clientWidth:元素内容可视区宽度(水平方向 width + 左右 padding)。

clientHeight:元素内容可视高度(垂直方向 height + 上下padding)。

offsetWidth:元素实际宽度(水平方向 width + 左右 padding + 左右 border-width)。

offsetHeight:元素实际高度(垂直方向 height + 上下 padding + 上下 border-width)。

scrollWidth:元素内容实际宽度,内容不超过盒子宽度时为盒子的 clientWidth(图1 A、B、C)。

scrollHeight:元素内容真实高度,内容不超过盒子高度为盒子的 clientHeight。

scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离,或当元素内容高度超过元素本身高度时,scrollTop 指的是元素内容超出元素上边界的那部分高度。

clientLeft:元素 border-left 的 width,也可以视为 ( offsetWidth  - clientWidth ) / 2。

clientTop:元素 border-top 的width ,也可视为(offsetHeight - clientHeight)/ 2。

offsetLeft:元素到 offsetParent 左侧距离(不包括父元素的 border 值,如图三)。

offsetTop:元素到 offsetParent 顶部距离。

offsetParent:距离元素最近的一个具有定位的父级元素(relative,absolute,fixed),如果父级元素都不是定位元素,offsetParent 为浏览器窗口最边边(大部分资料说 body,但如图测试 offsetLeft 却包含 html 的 border-left 宽)。

如图二,火狐浏览器的 offsetLeft 不包含 body 的 border-left 值,其余部分浏览器包含。

2、window 视图属性,(于分辨率1920 * 1080下F11全屏放大屏幕所测,包含滚动条)

innerWidth:浏览器窗口可视区宽度(不包括浏览器控制台、菜单栏、工具类)【1920px】

innerHeight:浏览器窗口可视区高度(不包括浏览器控制台、菜单栏、工具类)【1080px】

3、document 文档视图

document.documentElement.clientWidth:浏览器窗口可视区宽度(不包含浏览器控制台、菜单栏、工具栏、滚动条)。

document.documentElement.clientHeight:浏览器窗口可视区高度(不包含浏览器控制台、菜单栏、工具栏、滚动条)。

document.documentElement.offsetWidth:获取DOM文档根节点 html 元素对象的宽度,即offsetWidth  = width + padding +border,不包括margin。

document.documentElement.offsetHeight:获取DOM文档根节点 html 元素对象的高度,即offsetHeight = height + padding + border,不包括margin(包括 body 的 margin)。

document.documentElement.scrollWidth:获取 html 元素对象内容的实际宽度,即 html 元素对象的滚动宽度。

document.documentElement.scrollHeight:获取 html 元素对象内容的实际高度,即 html 元素对象的滚动高度。

document.documentElement.clientLeft:获取 html 元素对象左边框宽度。

document.documentElement.clientTop:获取 html 元素对象上边框宽度。

document.documentElement.scrollLeft:返回文档滚动 left 方向距离(当窗口发生滚动时值改变)。

document.documentElement.scrollTop:返回文档滚动 top 方向距离(当窗口发生滚动时值改变)。

document.documentElement.offsetLeft:设置或获取页面文档向右滚动或的像素数。

document.documentElement.offsetTop:设置或获取页面文档向下滚动过的像素数。

document.body.offsetHeight:获取整个文档高度(不包含 body 的 margin )。

scrollHeight:元素内容的高度

  对于 #parent 元素来说,其元素内容就是#child元素的高度,因为#child设置overflow:hidden,所以,#paren 的 scrolllHeight 为300;
  对于 #child 元素来说,其元素内容就是 01<br/> ~ 20<br/>,其中一行高度是21,故 #child 的 scrollHeight为 420

scrollTop:当元素内容高度超过元素本身高度时,scrollTop 指的是元素内容超出元素上边界的那部分高度。
  设 parent.scrollTop = 21时,相当于 #child 往下滚动,顶部内容距离 #parent 21数值,此时 #child的内容从02显示。
  设 child.scrollTop = 42时, 相当于 #child 的内容往下滚动显示,部分内容距离 #child顶部 42数值,02、03往上移,故04开始显示。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#parent {
position: relative;
overflow: auto;
width: 100px;
height: 100px;
background: #f1a899;
} #child {
position: relative;
overflow: hidden;
width: 50px;
height: 300px;
background: #84b3fd;
}
</style>
</head>
<body>
<div id="parent">
<div id="child">
01<br/>
02<br/>
03<br/>
04<br/>
05<br/>
06<br/>
07<br/>
08<br/>
09<br/>
10<br/>
11<br/>
12<br/>
13<br/>
14<br/>
15<br/>
16<br/>
17<br/>
18<br/>
19<br/>
20<br/>
</div>
</div>
<script>
var parent = document.getElementById("parent");
parent.scrollTop = 21;
console.log("parent.scrollHeight: " + parent.scrollHeight); // 300
console.log("parent.scrollTop: " + parent.scrollTop); // 21 设置 parent.scrollTop = 21,此时 #迟不设置则为 0
console.log("parent.offsetHeight: " + parent.offsetHeight); // 100 console.log("---------------------------"); var child = document.getElementById("child");
child.scrollTop = 42;
console.log("child.scrollHeight: " + child.scrollHeight); // 420
console.log("child.scrollTop: " + child.scrollTop); // 42 设置 child.scrollTop = 42,不设则为 0
console.log("child.offsetTop: " + child.offsetTop); // 0
</script>
</body>
</html>

clientWidth、offsetWidth、scrollWidth……的更多相关文章

  1. 四种浏览器对 clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释差异

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...

  2. JS 获取浏览器窗口大小clientWidth、offsetWidth、scrollWidth

    常用: JS 获取浏览器窗口大小   // 获取窗口宽度 if (windows.innerWidth) winWidth = windows.innerWidth; else if ((docume ...

  3. clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight

    clientWidth.clientHeight.offsetWidth.offsetHeight以及scrollWidth.scrollHeight是几个困惑了好久的元素属性,趁着有时间整理一下 1 ...

  4. JavaScript属性中的offsetLeft、offsetWidth、clientWidth、scrollLeft、scrollWidth、innerWidth

    1.offsetLeft和offsetTop 只读属性,返回当前元素与父辈元素之间的距离(不包括边框).其中父辈元素的取法是有门道的: (1).若父辈元素中有定位的元素,那么就返回距离当前元素最近的定 ...

  5. JS:body元素对象的clientWidth、offsetWidth、scrollWidth、clientLeft、offsetLeft、scrollLeft

    document.body.clientWidth 获取body元素对象的内容可视区域的宽度,即clientWidth=width+padding,不包括滚动条. document.body.clie ...

  6. scrollWidth、clientWidth、offsetWidth、width的区别

    scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大. clientWidth:对象内容的可视区的宽度,不包滚动条等边线,会随对象显示大小的变化而改变. off ...

  7. clientTop、clientWidth、offsetTop、offsetWidth、scrollTop

    <div id="drag" class="drag">drag me</div> <script type="text ...

  8. 理解clientX、clientY、offsetLeft、event.offsetTop、offsetWidth、offsetHeight、clientWidth、clientHeight、scrollTop、scrollHeight

    一.clientX和clientY 事件发生时,鼠标距离浏览器的可视区域的X.Y轴的位置,不包含滚动条的区域的部分.就算是页面进行了滚动,鼠标的坐标值还是参考可视区域的. 二.offsetLeft和o ...

  9. offsetParent、offsetTop、offsetLeft、offsetWidth、offsetHeight

    w3c规范,请戳这里:http://www.w3.org/TR/cssom-view/#dom-htmlelement-offsetparent 一.offsetParent 英文解读: part o ...

随机推荐

  1. SPI简单解析

    什么是SPI  一种服务加载方式,全名为Service Provider Interface,Service提供者接口 如果我们要抽象里面的模块,在面对对象编程当中,我们模块之间,一般推荐模块之间基于 ...

  2. @Autowired 注解有什么用?

    @Autowired 可以更准确地控制应该在何处以及如何进行自动装配.此注解用于在 setter 方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean.默认情况下,它是类型驱动的注入. ...

  3. 简述 Memcached 内存管理机制原理?

    早期的 Memcached 内存管理方式是通过 malloc 的分配的内存,使用完后通过 free 来回收内存,这种方式容易产生内存碎片,并降低操作系统对内存的管理效 率.加重操作系统内存管理器的负担 ...

  4. 判断1~n有多少个1

    判断1~n有多少个1 例如:1~12中 1 2 3 4 5 6 7 8 9 10 11 12 有1,10,11,12中含有1,则共有5个1: 算法如下: #include<stdio.h> ...

  5. poj_3253_priority queue

    描述 农夫约翰想要修篱墙,他需要N块木板,第i块板长Li.然后他买了一块很长的板子,足够他分成N块.忽略每次锯板子带来的损失. 约翰忘记买锯子了,于是像Don借.Don要收费,每次锯一下,就要收一次板 ...

  6. 二、cadence焊盘与封装制作操作步骤详细说明

    一.焊盘制作 1.打开Pad Designer软件,新建文件--设置保存路径和焊盘名称(规范命名) 2.Parameters--设置单位--过孔类型--是否镀金 3.Layers--single la ...

  7. 安卓性能测试之 adb shell 常用命令

    pm list packages 列出包名adb shell pm list packages:列出所有的包名.adb shell dumpsys package:列出所有的安装应用的信息adb sh ...

  8. CSS简单样式练习(三)

    运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  9. AcWing 1050. 鸣人的影分身

    题目链接 题目描述: 在火影忍者的世界里,令敌人捉摸不透是非常关键的. 我们的主角漩涡鸣人所拥有的一个招数--多重影分身之术--就是一个很好的例子. 影分身是由鸣人身体的查克拉能量制造的,使用的查克拉 ...

  10. Uncaught TypeError: document.getElementsById is not a function

    今天博主终于开始攻关javascript(俗称js)了,不过要注意了,它和java可是一丁点关系都没有,就像老婆饼和老婆一样. 下面就让我们来讨论一下博主这次犯下的低级错误吧 一.背景(解决方法在文末 ...