浅谈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 相关文章推荐
js键盘上下左右键怎么触发function(实例讲解)
Dec 14 Javascript
js拖拽一些常见的思路方法整理
Mar 19 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
AngularJS 教程及实例代码
Oct 23 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
Nov 17 Javascript
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
浅谈vuepress 踩坑记
Apr 18 Javascript
详解如何从零开始搭建Express+Vue开发环境
Jul 17 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 Javascript
javascript中正则表达式语法详解
Aug 07 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
php 字符串替换的方法
2012/01/10 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
5 cool javascript apps
2007/03/24 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python提取网页中超链接的方法
2016/09/18 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Python实现的字典值比较功能示例
2018/01/08 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
党委书记岗位职责
2013/11/24 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
综合测评个人总结
2015/03/03 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
导游词之长城八达岭
2019/09/24 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers