BOM中的各种height
BOM中的高度属性主要涉及三块:screen、window、文档下的元素。
screen
其中screen最简单,代表着显示器的对象。
screen.height :屏幕高度,像素为单位。
screen.availHeight :屏幕高度送去Windows系统的任务栏的高度。
从左到右,分别是Edge Chrome Firefox。因为是同一个屏幕,所以三者的结果都是相同的。



screen.width 和 screen.availWidth 类似。因为水平方向没有任务栏,所以 screen.width == screen.availWidth 。



window
这里的window代表浏览器窗口,关于高度有两个:
- innerHeight
- outerHeight
window.outerHeight : 获取整个浏览器窗口的高度(单位:像素),包括侧边栏(如果存在)、窗口镶边和窗口调整边框。
window.innerHeight : 浏览器窗口的视口(viewport)高度(以像素为单位),如果存在水平滚动条,则包括它。

关于window的宽度类似:
- window.outerWidth : 获取浏览器窗口外部的宽度。表示整个浏览器窗口的宽度,包括侧边栏(如果存在)、窗口镶边和调整窗口大小的边框。
- window.innerWidth : 浏览器视口(viewport)宽度(单位:像素),如果存在垂直滚动条则包括它。
文档下的元素
文档下的元素的高度信息主要通过clientHeight这一属性获得。
clientHeight:
返回元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。
在下图中,element.clientHeight就是红色框内的高度。

关于文档中元素的clientHeight,我们主要关注这两个元素的:
- document.documentElement
- document.body
什么是 document.documentElement 元素呢?它代表着一个文档的根元素,如HTML文档的 <html> 元素,XML文档的根元素等等。
三者的关系
window.innerHeight document.documentElement.clientHeight 和 document.body.clientHeight 之间有什么关系呢?
window.innerHeight = document.documentElement.clientHeight +水平方向滚动条高度
Edge:因为没有水平方向滚动条,所以两者值相同


Chrome:因为有水平方向的滚动条,所以 window.innerHeight 比 document.documentElement.clientHeight 多了17px


而 document.body.clientHeight 就是body标签内的元素所占的高度(除了border和margin)。
clientHeight offsetHeight scrollHeight之间的关系
用一张图来说明,红色框中的是当前元素。
clientHeight :只有元素的内容区和padding
offsetHeight :元素的内容区 padding border margin scrollbar
scrollHeight :元素内容的实际高度,包含了溢出的部分
scrollTop :元素距离他容器顶部的像素距离

BOM中的各种height的更多相关文章
- css中的width,height,属性与盒模型的关系
这段话很容易记住盒模型: css中盒子模型包含属性margin.border.padding.content,他们可以把它转移到我们日常生活中的盒子(箱 子)上来理解,日常生活中所见的盒子也具有这些属 ...
- K3精益版给物料添加属性,并在BOM中新增字段引用该属性
1.给物料新增属性 打开“系统--基础资料--公共资料--核算项目管理”,然后双击物料,弹出核算项目类别-修改对话框.再点新增按钮: 输入你想新增字段的类型,长度,想要放置的位置. 相关属性里面选的是 ...
- JavaScript BOM-11-BOM的核心-window对象; window对象的控制,弹出窗口方法; 超时调用; 间歇调用; location对象常用属性; 位置操作--location.reaplace,location.reload(); BOM中的history对象; Screen对象及其常用属性; Navigator对象;
JavaScript BOM 学习目标 1.掌握什么是BOM 2.掌握BOM的核心-window对象 3.掌握window对象的控制.弹出窗口方法 什么是bom BOM(browser object ...
- CSS中width和height与盒子模型的关系
盒子模型 css中盒子模型包含属性margin.border.padding.width与height,他们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也具有这些属性,所以 ...
- 【CSS中width、height的默认值】
对于初学者来说,CSS中的width.height的默认值是很神奇的,因为经常看到如下这样的代码:明明只给一个#father标签(红色的div)设置了一个width,为啥它在浏览器中显示出来是有一个固 ...
- js中不同的height, top的对比
每次看到js中的clientHeight(clientTop), offsetHeight(offsetTop),scrollHeight(scrollTop)就头大,根本分不清这几种的区别,然而碰到 ...
- CSS中详解height属性
目录结构: contents structure [+] hight属性值类型一览表 height的%的使用 定义 实例 需要注意的 参考文章 hight属性值类型一览表 value describt ...
- 解决在vue中设置的height: 100%没有效果
在新的页面设置height无效果的时候.需要改动App这个文件的heigth 解决办法.给app这个盒子设置高度.默认情况下为0 设置高度100%时,div的高度会等同于其父元素的高度.而上面中id为 ...
- jQuery中animate的height的自适应
可以用 animate() 方法几乎可以操作大部分CSS 属性,但其属性的值不能为字符串,很多人都遇到过这个问题. 例如:获取一个元素自适应时的高,但el.animate({height:‘aut ...
随机推荐
- Linux -atime、mtime、ctime
Linux中,文件都有其自身的atime.mtime.ctime,在不同的命令下,各时间发生相应的改变.下面,我们来简单的介绍一下: atime (access time):表示最后一次访问文件或目录 ...
- HTTP上传 文件上传 图片上传 HTTP上传原理 文件上传原理 图片上传原理
1.概述 在最初的http协议中,没有上传文件方面的功能.rfc1867(http://www.ietf.org/rfc/rfc1867.txt )为http协议添加了这个功能.浏览器按照此规范将用户 ...
- [Mobile Web]Web中如何分辨移动设备?(iPad、iPhone、Android)
第一种, Javascript [javascript] view plaincopyprint?在CODE上查看代码片派生到我的代码片 var deviceAgent = navigator.use ...
- Vue 自定义图片懒加载指令v-lazyload
Vue是可以自定义指令的,最近学习过程中遇见了一个需要图片懒加载的功能,最后参考了别人的代码和思路自己重新写了一遍.以下将详细介绍如何实现自定义指令v-lazyload. 先看如何使用这个指令: &l ...
- VueJS实现一个货币结算自定义控件
Vue.component('currency-input', { template: '\ <div>\ <label v-if="label">{{ l ...
- web安全—浏览器的进制
浏览器的进制 字符的ascii码值可以转化为进制形式.可以用来绕过XSS filter. HTML属性值中的进制使用 .十进制使用a 表示,&#作为前缀,;作为后缀,后缀也可以没有. 如果要使 ...
- ES5 forEach()用法和提前终止遍历
forEach()方法从头到尾的遍历数组,为每个元素调用指定的函数,第一个参数接收的是一个函数,第二个参数是可选的,如果有第二个参数,则调用的函数被看作是第二个参数的方法(第二个参数可以作为第一个调用 ...
- 全球移动互联网大会gmic 2017为什么值得参加?
长城会CEO郝义认为,"科学产业化将会推动科学复兴,"而本次GMIC 北京 2017也将首次引入了高规格科学家闭门峰会,专门设置G-Summit全球科学创新峰会,以"科学 ...
- DTCMS插件的制作实例电子资源管理(三)前台模板页编写
总目录 插件目录结构(一) Admin后台页面编写(二) 前台模板页编写(三) URL重写(四) 本实例旨在以一个实际的项目中的例子来介绍如何在dtcms中制作插件,本系列文章非入门教程,部分逻辑实现 ...
- SpringMVC+Spring 事务无法回滚的问题
问题描述: Controller里面执行Service的方法,Service方法抛出异常,但是没有按照事务配置的方式回滚: Service的事务配置没有问题: 出现此问题的原因: 在springmvc ...