浅谈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 要点归纳(一) jQuery选择器
Mar 21 Javascript
javascript中的缓动效果实现程序
Dec 29 Javascript
让alert不出现弹窗的两种方法
May 18 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
Jun 10 Javascript
js实现文件上传表单域美化特效
Nov 02 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
Jan 08 Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 Javascript
巧用jQuery选择器提高写表单效率的方法
Aug 19 Javascript
jQuery zTree树插件简单使用教程
Jan 10 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
详解设置Webstorm 利用babel将ES6自动转码成ES5
Dec 20 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 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的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
详解python做UI界面的方法
2019/02/27 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
C语言面试题
2015/10/30 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
班组长岗位职责
2014/03/03 职场文书
社区平安建设方案
2014/05/25 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
MYSQL常用函数介绍
2022/05/05 MySQL