浅谈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 相关文章推荐
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
比较常见的javascript中定义函数的区别
Nov 09 Javascript
jquery获取复选框的值的简单实例
May 26 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
Jul 01 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
浅谈Vue数据响应思路之数组
Nov 06 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
vue动态绑定style样式
Apr 20 Vue.js
原生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开发GUI
2006/10/09 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
jQuery链使用指南
2015/01/20 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
go语言计算两个时间的时间差方法
2015/03/13 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
python实现批量注册网站用户的示例
2019/02/22 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
用python计算文件的MD5值
2020/12/23 Python
药学专业大学生自荐信
2013/09/28 职场文书
无毒社区工作方案
2014/05/23 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
Python面试不修改数组找出重复的数字
2022/05/20 Python