浅谈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 相关文章推荐
解决jquery操作checkbox火狐下第二次无法勾选问题
Feb 10 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
Apr 06 Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
JavaScript事件发布/订阅模式原理与用法分析
Aug 21 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
vue自定义指令用法经典实例小结
Mar 16 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
微信小程序制作扭蛋机代码实例
Sep 24 Javascript
Vue双向绑定实现原理与方法详解
May 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
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
php根据年月获取季度的方法
2014/03/31 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
分公司经理岗位职责
2013/11/11 职场文书
机修工岗位职责
2013/11/24 职场文书
会计学自我鉴定
2014/02/06 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
献爱心大型公益活动策划方案
2014/09/15 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL