zoukankan      html  css  js  c++  java
  • document.body、document.documentElement和window获取视窗大小的差别

    来源: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: 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:     100px;
      10:     height:100px;
      11:     background:red;
      12: }
      13: #data
      14: {
      15:     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 = "正常文档流情况:"+"<br/>";
      10: data.innerHTML += "w="+w+"<br/>";
      11: data.innerHTML += "h="+h+"<br/>";
      12: data.innerHTML += "document.body.clientHeight="+document.body.clientHeight+"<br/>";
      13: data.innerHTML += "document.body.clientWidth="+document.body.clientWidth+"<br/>";
      14: data.innerHTML += "window.innerWidth="+window.innerWidth+"<br/>";
      15: data.innerHTML += "window.innerHeight="+window.innerHeight+"<br/>";
      16: data.innerHTML += "document.documentElement.clientHeight="+document.documentElement.clientHeight+"<br/>";
      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


  • 相关阅读:
    外键的缺陷
    laravel 关联模型
    n的阶乘末尾出现的次数
    JavaScript的self和this使用小结
    cocos2dx中的内存管理方式
    c++ 与 lua 简单交互参数介绍
    c++的单例模式及c++11对单例模式的优化
    cocos2dx帧动画
    cocos2dx中坐标系
    cocos2dx中替代goto的用法:do{}while(0)和CC_BREAK_IF
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5352695.html
Copyright © 2011-2022 走看看