在日常开发任务中,前端需要我们得到可见区域的宽度和高度。特别是对于拖动相关的应用,需要判断拖动的边界值。由于实际的需要,于是在网上找到了相关的文章,然后加以整理,通过自己的理解描述一下,共需要的开发朋友们参考。详细信息请看正文。(注意:下面只展示通过纯JavaScript来获取,如果你使用前端框架就不需要考虑兼容问题了,如:JQuery)
从字面上面解释就是我们可以看见的区域,实际上面也是如此。在浏览器中,由于内容太多,浏览器的屏幕太小不能一次全部显示,此时浏览器就出现了滚动条,可见区域及不通过滚动条就可以看见的区域称为可见区域。
IE浏览器
代码 | 描述 |
document.body.clientWidth | BODY对象宽度 |
document.body.clientHeight | BODY对象高度 |
document.documentElement.clientWidth | 可见区域宽度 |
document.documentElement.clientHeight | 可见区域高度 |
FireFox浏览器
代码 | 描述 |
document.body.clientWidth | BODY对象宽度 |
document.body.clientHeight | BODY对象高度 |
document.documentElement.clientWidth | 可见区域宽度 |
document.documentElement.clientHeight | 可见区域高度 |
Opera浏览器
代码 | 描述 |
document.body.clientWidth | 可见区域宽度 |
document.body.clientHeight | 可见区域高度 |
document.documentElement.clientWidth | 页面对象宽度(即BODY对象宽度加上Margin宽) |
document.documentElement.clientHeight | 页面对象高度(即BODY对象高度加上Margin高) |
而如果没有定义W3C的标准(即没有添加<DOCTYPE>标签)
IE浏览器为:
代码 | 描述 |
document.documentElement.clientWidth | 0 |
document.documentElement.clientHeight | 0 |
FireFox为:
代码 | 描述 |
document.documentElement.clientWidth | 页面对象宽度(即BODY对象宽度加上Margin宽) |
document.documentElement.clientHeight | 页面对象高度(即BODY对象高度加上Margin高) |
Opera为:
代码 | 描述 |
document.documentElement.clientWidth | 页面对象宽度(即BODY对象宽度加上Margin宽) |
document.documentElement.clientHeight | 页面对象高度(即BODY对象高度加上Margin高) |
从上面可以看出,要想准确获取屏幕的大小不是一件容易的事情。
代码 | 描述 |
document.body.clientWidth | 网页可见区域宽 |
document.body.clientHeight | 网页可见区域高 |
document.body.offsetWidth | 网页可见区域宽(包括边线的宽) |
document.body.offsetHeight | 网页可见区域高(包括边线的宽) |
document.body.scrollWidth | 网页正文全文宽 |
document.body.scrollHeight | 网页正文全文高 |
document.body.scrollTop | 网页被卷去的高 |
document.body.scrollLeft | 网页被卷去的左 |
window.screenTop | 网页正文部分上 |
window.screenLeft | 网页正文部分左 |
window.screen.height | 屏幕分辨率的高 |
window.screen.width | 屏幕分辨率的宽 |
window.screen.availHeight | 屏幕可用工作区高度 |
window.screen.availWidth | 屏幕可用工作区宽度 |
1、取窗口滚动条高度
/** * 取窗口滚动条高度 */ function getScrollTop() { var scrollTop=0; if ( document.documentElement && document.documentElement.scrollTop ) { scrollTop=document.documentElement.scrollTop; } else if( document.body ) { scrollTop = document.body.scrollTop; } return scrollTop; }
2、取窗口可视范围的高度
/** * 取窗口可视范围的高度 */ function getClientHeight() { var clientHeight = 0; if ( document.body.clientHeight && document.documentElement.clientHeight ) { var clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight; } else { var clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight; } return clientHeight; }
3、取文档内容实际高度
/** * 取文档内容实际高度 */ function getScrollHeight() { return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); }