浅谈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 相关文章推荐
checkbox 复选框不能为空
Jul 11 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
Sep 19 Javascript
JavaScript获取Url里的参数
Dec 18 Javascript
Javascript实现跑马灯效果的简单实例
May 31 Javascript
jQuery向父辈遍历的简单方法
Sep 18 Javascript
BootStrap tab选项卡使用小结
Aug 09 Javascript
快速解决js中window.location.href不工作的问题
Nov 02 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
SVG动画vivus.js库使用小结(实例代码)
Sep 14 Javascript
node 利用进程通信实现Cluster共享内存
Oct 27 Javascript
微信小程序pinker组件使用实现自动相减日期
May 07 Javascript
jquery插件实现轮播图效果
Oct 19 jQuery
原生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
source.php查看源文件
2006/12/09 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
python3实现逐字输出的方法
2019/01/23 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
python实现IOU计算案例
2020/04/12 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
代理人委托书
2014/09/16 职场文书
会计试用期自我评价
2014/09/19 职场文书
2015新学期开学寄语
2015/02/26 职场文书
毕业设计致谢语
2015/05/14 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android