来源:http://www.ido321.com/906.html

在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. 1: var w=window.innerWidth
  1. 2: || document.documentElement.clientWidth
  1. 3: || document.body.clientWidth;
  1. 4:
  1. 5: var h=window.innerHeight
  1. 6: || document.documentElement.clientHeight
  1. 7: || document.body.clientHeight;

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

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

js代码

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

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

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

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

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

关于JavaScript中的*top、*left、*width、*Height详解:http://www.ido321.com/911.html

document.body、document.documentElement和window获取视窗大小的区别的更多相关文章

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

    来源:http://www.ido321.com/906.html 在w3school关于window对象的介绍中,介绍了获取浏览器窗体大小的三种方法(浏览器的视口,不包含工具栏和滚动栏). 对于In ...

  2. window.innerWidth、document.body.clientWidth和html的大小的区别

    首先,我们知道document.body指向的就是body元素,如此,我们就可以以document.body来获取body的大小.何以知之?如下代码: var body = document.quer ...

  3. document.body / document.ducumentElement /等获取高度和宽度的区别

    document.body / document.ducumentElement /等获取高度和宽度的区别 <!DOCTYPE html> <html> <head la ...

  4. javascript中window与document对象、setInterval与setTimeout定时器的用法与区别

    一.写在前面 本人前端菜鸟一枚,学习前端不久,学习过程中有很多概念.定义在使用时容易混淆,在此给向我一样刚踏入前端之门的童鞋们归纳一下.今天给大家分享一下js中window与document对象.se ...

  5. document.referrer的使用和window.opener 跟 window.parent 的区别

    偶尔看到了document.referrer,之前一直有点疑惑与window.opener 和 window.parent之间的区别 首先查了一下w3cSCHOOL, 上面的解释:referrer 属 ...

  6. document.referrer和history.go(-1)退回上一页区别

    javascript:location=document.referrer;和javascript:history.go(-1);区别: 返回上一页,在PC端我们可以使用:history.go(-1) ...

  7. js 原生 document.querySelectorAll document.getElementsByTagName document.querySelector document.getElementById的区别

    1.querySelector只返回匹配的第一个元素,如果没有匹配项,返回null.  2.querySelectorAll返回匹配的元素集合,如果没有匹配项,返回空的nodelist(节点数组). ...

  8. document.getElementById & document.querySelector

    document.getElementById & document.querySelector https://developer.mozilla.org/en-US/docs/Web/AP ...

  9. 用 Javascript 获取页面大小、窗口大小和滚动条位置

    页面大小.窗口大小和滚动条位置这三个数值在不同的浏览器例如 Firefox 和 IE 中有着不同的实现.即使在同一种浏览器例如 IE 中,不同版本也有不同的实现. 本文给出两个能兼容目前所有浏览器的 ...

随机推荐

  1. 移植 FFMPEG-2.2.4 -(编译)

    源码下载:http://www.ffmpeg.org/download.html编译安装: http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu su ...

  2. HTML5入门5---HTML5控件元素

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. ZipArchive框架的文件压缩和解压

    导入第三方框架ZipArchive之后还要在系统库文件中导入一个如下文件(搜索libz出来的任何一个都可以)   导入的头文件是#import "Main.h" 文件压缩 -(vo ...

  4. Linux功能-RPM命令详解

    一.概述 RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”,用RPM包方式来发布软件变得越来越流行,主要的原因是这种软件发布 ...

  5. EJB--事务管理 .

    在我们对事务的基本概念以及出现的问题和隔离级别有进一步的了解之后,接下来看看EJB是如何进行事务管理. 在EJB中有两种使用事务的方式.第一种方式通过容器管理的事务,叫CMT(Container-Ma ...

  6. Main()方法

    C#是从方法Main()开始执行的.这个方法必须是类或结构的静态方法,并且其返回类型必须是int或void .虽然显式指定p山屺修饰符是很常见的,因为按照定义,必须在程序外部调用该方法,但我们给该入口 ...

  7. How to upgrade boost libary using apt-get ?

    apt-get install libboost1.55-all-dev using version number between boost and all, but the preconditio ...

  8. Miller-Rabin素数测试学习小计

    1.Miller-Rabin是干啥的?它是用来检测一个数字(一般是很大的数字)是不是素数: 2.Miller-Rabin算法基于的两个定理: (1)费尔马小定理:如果p是一个素数,且0<a< ...

  9. 函数os_file_pread

    /*******************************************************************//** Does a synchronous read ope ...

  10. linux的HugePage与oracle amm关系

     如果Oracle 是11g以后的版本,那么默认创建的实例会使用Automatic Memory Management (AMM)的特性,该特性与HugePage不兼容. 在设置HugePage之前需 ...