浅谈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 相关文章推荐
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
javascript对select标签的控制(option选项/select)
Jan 31 Javascript
jquery select动态加载选择(兼容各种浏览器)
Feb 01 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
jquery超简单实现手风琴效果的方法
Jun 05 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
详解Angular4 路由设置相关
Aug 26 Javascript
基于Vue实现拖拽功能
Jul 29 Javascript
原生JS实现的轮播图功能详解
Aug 06 Javascript
在node中使用jwt签发与验证token的方法
Apr 03 Javascript
JavaScript this指向相关原理及实例解析
Jul 10 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 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 xfocus防注入资料
2008/04/27 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
React如何避免重渲染
2018/04/10 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
python的slice notation的特殊用法详解
2019/12/27 Python
详解python中的异常和文件读写
2021/01/03 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
暑假实习求职信范文
2013/09/22 职场文书
医药大学生求职简历的自我评价
2013/10/17 职场文书
小学学校评估方案
2014/06/08 职场文书
盗窃案辩护词
2015/05/21 职场文书
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技