html获取可见窗口大小

为了获取网页可见区域的高度,不同终端滚动元素指向 html 中 dom 是不一样的。
PC 端:document.scrollingElement = document.documentElement
Mobile 端:document.scrollingElement = document.body

兼容性

浏览器窗口视图

屏幕大小

1
2
3
4
5
6
window.screen.height:屏幕分辨率的高(屏幕的高度 )
window.screen.width:屏幕分辨率的宽 (屏幕的宽度 )
window.screen.availHeight:屏幕可用工作区的高
window.screen.availWidth:屏幕可用工作区的高
window.screenTop:浏览器窗口距离电脑屏幕上边界的距离
window.screenLeft:浏览器窗口距离电脑屏幕左边界的距离

window 大小

1
2
3
4
window. innerWidth :浏览器可视区域的内宽度,包含滚动条
window.innerHeight:浏览器可视区域的内高度,包含滚动条
window.outerWidth:浏览器宽度
window.outerHeight:浏览器高度

滚动偏移量

1
2
3
4
5
6
window.pageYOffset:需要网页存在滚动条才可以,存在竖向滚动条时,网页正文向下滚动一段距离n px,该值即为n
window.pageXOffset:同理,无滚动条值为0
document.body.scrollTop:网页下滑的距离(与上一对值相同,滚动条位置)
document.body.scrollLeft:网页左滑的距离
document.documentElement.scrollTop:与上一对值相同(与上一对都是获得滚动条位置,但是存在兼容问题)
document.documentElement.scrollLeft:兼容处理方案

兼容问题,具体与 html 文件头的<DOCTYPE…>有关
var srollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;

可见区域大小

1
2
3
4
document.body.clientWidth:获取可视区域的宽(可以进行页面展示的,不包含边线,例如body{border:10px solid red;})
documment.body.clientHeight:获取可视区域的高(可以进行页面展示的)
document.documentElement.clientWidth:页面可视宽度,但是不包含滚动条组件的十几px像素
document.documentElement.clientHeight:可视区域高度, 实际上就是 元素,只不过显示的是可见的部分,即浏览器窗口大小(网页无滚动条时与window.innerHeight同值)

滚动元素大小

1
2
3
4
document.documentElement.scrollWidth:获取网页正文全文宽(包括滚动部分)
document.documentElement.scrollHeight:获取网页正文全文高(包括滚动部分)
document.body.scrollWidth:与上一对值相同
document.body.scrollHeight:与上一对值相同