document.body、document.documentElement和window获取视窗大小的区别

简介: 在w3school关于window对象的介绍中,介绍了获取浏览器窗口大小的三种方法(浏览器的视口,不包括工具栏和滚动条)。 对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari: window.innerHeight – 浏览器窗口的内部高度window.innerWidth – 浏览器窗口的内部宽度对于 Internet Exp

在w3school关于window对象的介绍中,介绍了获取浏览器窗口大小的三种方法(浏览器的视口,不包括工具栏和滚动条)。

对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

  • window.innerHeight – 浏览器窗口的内部高度
  • window.innerWidth – 浏览器窗口的内部宽度

对于 Internet Explorer 8、7、6、5:

  • document.documentElement.clientHeight
  • document.documentElement.clientWidth

或者

  • document.body.clientHeight
  • document.body.clientWidth

实用的JavaScript方案(涵盖所有浏览器):

   1: var w=window.innerWidth
   2: || document.documentElement.clientWidth
   3: || document.body.clientWidth;
   4:
   5: var h=window.innerHeight
   6: || document.documentElement.clientHeight
   7: || document.body.clientHeight;

返回的都是数值,不带单位。这是共同点。好,接下来,看看他们的区别

   1: DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   2: <html xmlns="http://www.w3.org/1999/xhtml">
   3: <head>
   4: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   5: <title>无标题文档</title>
   6: <style type="text/css">
   7: .test
   8: {
     
   9:     width:100px;
  10:     height:100px;
  11:     background:red;
  12: }
  13: #data
  14: {
     
  15:     width:200px;
  16:     height:100px;
  17: }
  18: </style>
  19: </head>
  20:
  21: <body>
  22: <div class="test">test</div>
  23: <div id="data"></div>
  24: </body>
  25: </html>

js代码

   1: var w=window.innerWidth
   2: || document.documentElement.clientWidth
   3: || document.body.clientWidth;
   4: var h=window.innerHeight
   5: || document.documentElement.clientHeight
   6: || document.body.clientHeight;
   7:
   8: var data = document.getElementById('data');
   9: data.innerHTML = "正常文档流情况:"+"
"
;
  10: data.innerHTML += "w="+w+"
"
;
  11: data.innerHTML += "h="+h+"
"
;
  12: data.innerHTML += "document.body.clientHeight="+document.body.clientHeight+"
"
;
  13: data.innerHTML += "document.body.clientWidth="+document.body.clientWidth+"
"
;
  14: data.innerHTML += "window.innerWidth="+window.innerWidth+"
"
;
  15: data.innerHTML += "window.innerHeight="+window.innerHeight+"
"
;
  16: data.innerHTML += "document.documentElement.clientHeight="+document.documentElement.clientHeight+"
"
;
  17: data.innerHTML += "document.documentElement.clientWidth="+document.documentElement.clientWidth+"
"
;

看看结果输出:(ps:电脑分辨率是1366*768)

给.test添加左浮动:float:left,让其脱离正常文档流,看看结果:

除了document.body.clientHeight变成了100,其他基本保持不变。

但是给.data也添加float:left,在对应的浏览器中,document.body.clientHeight变成了0,其他基本保持不变。不信可以自己试试。

目录
相关文章
|
6月前
html_ifream与父级窗口之间的数据传递(window和document)
html_ifream与父级窗口之间的数据传递(window和document)
42 0
|
6月前
|
JavaScript 前端开发
$(document).ready()方法和window.onload有什么区别?
$(document).ready()方法和window.onload有什么区别?
47 0
|
JavaScript
js 获取 iframe 里面的 document 以及 window
js 获取 iframe 里面的 document 以及 window
623 0
|
JavaScript 前端开发
html、body、document、window 的区别
html、body、document、window 的区别
283 0
html、body、document、window 的区别
|
Web App开发 JavaScript iOS开发
获取网页中滚动条滚过的长度之document.documentElement与document.body
获取网页中滚动条滚过的长度之document.documentElement与document.body
|
Web App开发 JavaScript iOS开发
|
JavaScript 前端开发