### 前因

目前的移动端布局,以响应式布局居多,以适应在不同分辨率的屏幕,实现布局的方式可能有很多种,但是不管使用哪种方式,获取设备的可用宽高就能为问题的关键。

### 宽高的获取

“`

document.documentElement.clientWidth

document.documentElement.clientHeight

document.body.clientWidth

document.body.clientHeight

window.innerWidth

window.innerHeight

screen.availWidth

screen.availHeight

screen.width

screen.height

“`

常用的获取方式,也就上述的几种,还有一些其他的我们这里,暂时不做考虑。

接下来,我们默认文档声明为HTML5的文档声明,默认使用`IOS`的`safari`为测试浏览器,来做一些简单的测试。

### 空白页,上述属性的取值

查看截图,分别为横屏和竖屏时候的取值。

![Alt text](http://www.zhangyunling.com/study/2018/20180311/2.png)

![Alt text](http://www.zhangyunling.com/study/2018/20180311/1.jpg)

您也可以直接访问:[示例](/study/2018/20180311/index.html)

这是在没有设置任何属性的情况下,得到的宽高的取值如上图所示:

其中,每一个取值,都是包含宽和高,比如拿`screen.width = 375-667`为例,其实代表了:`screen.width= 375,screen.height = 667`。其他都类似。

那么接下来,我们就顺便来看看,每一个属性有什么影响?

这里,为了能更方便的对比,我们就不按照属性从上到下的顺序来看了,首先要看的是最稳定的数据。

#### screen.availWidth和screen.width

`screen`是设备的屏幕对象,理论上,当一个设备固定之后,那么这个设备的屏幕的可视宽度和高度也是固定的,所以这里也可以看出

在上述的横屏和竖屏时,得到的数据,都是一致的:

“`

screen.availWidth = 375px;

screen.width = 667px;

“`

并且,有一点需要注意的是,不管横屏还是竖屏,宽高都是相同,也就代表着,这两个属性,在任意情况下,都是不变的,并且其取值是按照竖屏时的属性,进行取值的。

接下来,我们就按照375和667为例,来看看其他的属性,都是如何取值的。

#### window.innerWidth与document.documentElement.clientWidth。

得到的结果(仅拿window.innerWidth与window.innerHeight)

“`

// 竖屏时 ,未全屏

window.innerWidth = 375

window.innerHeight = 553;

// 横屏时,全屏

window.innerWidth = 667

window.innerHeight = 375;

“`

可以看如上的两幅图,这两个属性得到的值,也是完全相同,但是在横屏和竖屏时的属性值,却是不同的。

这个不同主要来自于两个方面:

1. 横屏时,宽高调换了

2. 竖屏时,浏览器没有全屏显示。

所以,先看横屏全屏显示时,宽高正好就是设备可视区域的宽高,也是375与667,只是,宽是667,高是375。

竖屏时,由于存在了手机的状态栏,浏览器的导航栏和控制栏,所以,结果宽度是375,高度却只有553,也就是说,手机状态栏,浏览器导航栏和控制栏,占去了667-553=114的高度。

所以,window.innerWidth,window.innerHeight,document.documentElement.clientWidth,document.documentElement.clientHeight这几个属性,是取的浏览器内部的可视宽高,即浏览器一屏的宽高。

#### document.body.clientWidth 与document.body.clientHeight

这个我们可以见简单的这么理解,body元素的宽度或者高度。

而在横屏和竖屏时,取得的值入下:

“`

// 竖屏

clientWidth = 375

clientHeight = 150

// 横屏

clientWidth = 667

clientHeight = 165

“`

因为我在页面上设置了所有的元素的margin:0px;padding:0px;所有,body的宽度,就是浏览器可视区域的宽度,当竖屏和横屏时,会跟着变化。

而body的内容高度,则由body内部元素撑起的实际高度确定,设置body宽度账户,这两个属性的值,可以自己尝试去试试看结果。

### 结束

为什么这里要说一下这个呢,因为在移动端弹性布局中,rem单位布局,是一个很常用的方案,而对于rem的计算,就是需要我们了解到,需要用什么属性,来作为这个确认rem的基准数值,如果我们不能很好的理解,那么就可能导致在竖屏和转屏时,出现一些异常。

至于如何实现rem的基准计算,这里就不做说明了,仅做参考。

移动端获取当前屏幕的高度_手机移动端屏幕宽高详解相关推荐

  1. 移动端切图内容包括什么_手机移动端前端开发切图的一些疑问

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 从前年就开始学习html5,陆陆续续也学到了很多,html5新增的标签.css3新属性.js中和html5相关的部分: 可是每到项目实战的时候,总还是感觉 ...

  2. python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解

    使用 Python 进行数据处理的时候,常常会遇到判断一个数是否在一个区间内的操作.我们可以使用 if else 进行判断,但是,既然使用了 Python,那我们当然是想找一下有没有现成的轮子可以用. ...

  3. android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解...

    <Android实现获取短信验证码的功能以及自定义GUI短信验证详解>由会员分享,可在线阅读,更多相关<Android实现获取短信验证码的功能以及自定义GUI短信验证详解(8页珍藏版 ...

  4. c fread 快读 详解_梨的简笔画画法教程详解【彩色】__水果_水果简笔画图片_学画画网...

    2020-10-20 11:43:58 来源:简笔画教程 作者: 小西 导读: 美味的梨的简笔画怎么画?梨的简单的画法教程,手把手的教你画梨的简笔画,喜欢就跟着教程一起来学吧. 梨的简笔画画法教程详解 ...

  5. android设备登录是什么手机_手机玩游戏屏幕太小,教你怎么一分钟把手机游戏画面投到大屏幕上...

    把手机投屏到电脑上会带来很多便捷之处,尽管市面上部分手机屏幕的尺寸够大,但还是有很多手机屏幕不能满足我们的日常需求,例如玩一些大型游戏,屏幕小玩得不尽兴,相信很多人都会思考,有没有一些方法,可以将我们 ...

  6. 10截图时屏幕变大_手机上网课、开视频会议,如何让屏幕变大一点?

    点击图片进入商城▲车载闪充49.9秒杀! Reno2 Z直降200元!真无线耳机团购可省130元! 这个特殊时期很多伙伴和小O一样在家远程云办公.线上会议学生朋友们也是在家参加网上课程虽然现在的手机屏 ...

  7. 苹果手机屏幕突然变暗_手机突然屏幕失灵

    手机屏幕是手机重要的部件之一,如果在使用过程中出现手机屏幕失灵的情况如何解决,下面就为大家介绍一下手机突然屏幕失灵怎么办. 手机突然屏幕失灵 方法一: 1.关闭手机,取出电池,手机静置五分钟左右: 2 ...

  8. android bitmap 色温,色温对比度饱和度 屏幕量化测试_手机Android频道-中关村在线...

    既然是1080p四核手机横评,那么本次横评的重点无疑在于屏幕与性能跑分.对于屏幕部分,我们依旧请出了去年横评时引入评测环节的BM-7A亮度色度仪对参与测试的机型进行了色温.饱和度.对比度的测试.这一设 ...

  9. iphone主屏幕动态壁纸_苹果手机动态主屏幕壁纸 苹果怎么导入动态壁纸

    IPhone动态壁纸设置主屏幕为什么不会动? 苹果手机动态壁纸不动主要是因为一个设定成静态壁纸了,二是设定成主屏壁纸了.只需要将壁纸重新设置为锁屏屏幕壁纸,即可看到live动态壁纸效果了.iphone ...

最新文章

  1. Wireshark小技巧:将IP显示为域名
  2. 中层管理者,你到底怎样管理?
  3. 设计模式复习-迭代器模式
  4. 数据结构常见算法集锦
  5. HDU1272_并查集
  6. Tomcat线程连接池参数优化
  7. 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
  8. echart旭日图_海报级设计感的旭日图,就在 ECharts 4.0
  9. 基于FPGA实现ADC7768数据采集系统设计(8路)
  10. paip.提升用户体验---c++ qt 悬浮窗实现
  11. 2021-09-13Top-N 推荐系统,通常指的是个性化推荐系统,有别于热门推荐。
  12. 刀下留人--苹果开发者账号封号前挽救
  13. 提醒:使用过期Win10预览版后果很严重
  14. HTML---鼠标悬停导航栏变颜色
  15. 滑动速度监听VelocityTracker
  16. PostgreSQL 磁盘空间清理
  17. compile函数使用
  18. IT业台风警报(一)——望天
  19. 从新一期技术雷达看技术领域最新趋势
  20. Combating the Repatriation Blues

热门文章

  1. wifi速率模式MCS简介
  2. 联想万全t260磁盘阵列_联想万全系列服务器RAID技术及应用安装配置方法
  3. 数据库审计产品应该怎么选?
  4. 1076:正常血压(C C++)
  5. ISMS与PCI-DSS的关系
  6. 在线班级通讯录项目源码
  7. 关于卸载杀毒软件AVG的方法
  8. cvte 前端一面 凉经
  9. 关于课程及课程设计的后续安排
  10. 绿幕实时视频抠像技术解释