浅谈JavaScript的innerWidth与innerHeight


Posted in Javascript onOctober 12, 2017

innerWidth与innerHeight属性

说明:window对象的只读属性,声明了窗口的文档显示区的高度和宽度,以像素(px)为计量单位。 (注意:这里的宽度和高度不包括菜单栏、工具栏以及滚动条等的高度)

下面便对这两个属性进行验证:

屏幕分辨率为:1920x1080 浏览器:QQ浏览器(内核是Chrome) 代码如下:

var width=window.innerWidth,height=window.innerHeight; //分别定义width和height接收窗口的高和宽

alert(width); //窗口的宽度 1920px

alert(height);

//窗口的高度 950px

innerWidth因为浏览器两旁没有遮挡物,所以完美的得到了屏幕的宽度1920,而innerHeight因为浏览器上面有工具栏,显示屏又有任务栏,所以被挤掉了130px

这次博主依次干掉了任务栏(其实就是隐藏了)和工具栏中的标签页 并按下F12加上了开发者选项 再次进行测试:

/*————————干掉任务栏后————————*/
  var width=window.innerWidth,height=window.innerHeight;  
  alert(width);  //宽度没有变化,还是1920px
  alert(height); //而窗口的高度990px,表明任务栏占40px(任务栏的默认高度) 导致没有获取到全部高度

  /*————————又干掉标签页后,并加上开发者选项后————————*/
  var width=window.innerWidth,height=window.innerHeight;
  alert(width);  //1381px,说明浏览器开发者选项,对innerWidth有影响 1920-1381=549px 
  alert(height); 
//而窗口的高度979px,任务栏占40px,标签页占了11px(990-979) 而由此得出剩下的工具栏占了1080-979=101px

结论:说明innerHeight和innerWidth确实只计算显示窗口像素,如果没有菜单栏、工具栏等外部因素挤压它,它就会自动延伸,而如果有就只按显示窗体走

测试完外部的因素,下面测试一下内部的因素滚动条

<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
  <title>测试innerHeight属性</title>
   
  </head>
  
  <body>
  <div style="width:500px;height:1300px;background-color:red;"></div>
  
  <script>  
    window.onload=function(){
     /*————————div超出长度,带着滚动条后————————*/
     var width=window.innerWidth,height=window.innerHeight;  
      alert(width);  //窗口的宽度 1920px
      alert(height); //窗口的高度 950px
   }
   </script>
  </body>


 </html>

结论:说明内部的滚动条对innerWidth并没有影响,即使存在对width也没有影响,依旧是1920px

最终结论:innerHeight和innerWidth获取的是窗体的高与宽,外部因素如(浏览器开发者选项,收藏夹)会对它有影响,而内部因素(滚动条)则对其没有影响

下面说一下槽点最多的IE,关于IE兼容性的问题,可以这样解决

//兼容代码可以这样子写
var width = window.innerWidth,height = window.innerHeight;

if (typeof width != 'number') {  //如果类型不为number,表示该浏览器不支持innerWidth属性

 if (document.compatMode == 'CSS1Compat') {   //CSS1Compat:判断是否为标准兼容模式。

  width = document.documentElement.clientWidth;

  height = document.docuementElement.clientHeight;

 } else { //不是标准模式,则有可能是IE6或及其以下版本(早期的浏览器对css进行解析时,并未遵守W3C标准)

  width = document.body.clientWidth;   //网页可见区域宽

  height = document.body.clientHeight;   //网页可见区域高
}
  alert(width);
  alert(height);

以上这篇浅谈JavaScript的innerWidth与innerHeight就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 Javascript
javascript判断office版本示例
Apr 11 Javascript
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
js实现的下拉框二级联动效果
Apr 30 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
Aug 03 Javascript
微信小程序 获取相册照片实例详解
Nov 16 Javascript
vuex学习之Actions的用法详解
Aug 29 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
Vue2.0实现组件之间数据交互和通信操作示例
May 16 Javascript
vue中template的三种写法示例
Oct 21 Javascript
原生JS封装animate运动框架的实例
Oct 12 #Javascript
javascript中神奇的 Date对象小结
Oct 12 #Javascript
详解使用路由延迟加载 Angular 模块
Oct 12 #Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
Oct 11 #Javascript
js实现单张图片平移切换效果
Oct 11 #Javascript
jQuery自动或手动图片切换效果
Oct 11 #jQuery
简单实现vue验证码60秒倒计时功能
Oct 11 #Javascript
You might like
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
Python实现股市信息下载的方法
2015/06/15 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
Python字符串的一些操作方法总结
2019/06/10 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
行政总监岗位职责
2013/12/05 职场文书
我的求职计划书
2014/01/10 职场文书
股东合作协议书范本
2014/04/14 职场文书
环保志愿者活动总结
2014/06/27 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
人口与计划生育责任书
2015/05/09 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书