移动端获取当前屏幕的高度_手机移动端屏幕宽高详解
### 前因
目前的移动端布局,以响应式布局居多,以适应在不同分辨率的屏幕,实现布局的方式可能有很多种,但是不管使用哪种方式,获取设备的可用宽高就能为问题的关键。
### 宽高的获取
“`
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的基准计算,这里就不做说明了,仅做参考。
移动端获取当前屏幕的高度_手机移动端屏幕宽高详解相关推荐
- 移动端切图内容包括什么_手机移动端前端开发切图的一些疑问
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 从前年就开始学习html5,陆陆续续也学到了很多,html5新增的标签.css3新属性.js中和html5相关的部分: 可是每到项目实战的时候,总还是感觉 ...
- python符号格式化设置区间_Python 数值区间处理_对interval 库的快速入门详解
使用 Python 进行数据处理的时候,常常会遇到判断一个数是否在一个区间内的操作.我们可以使用 if else 进行判断,但是,既然使用了 Python,那我们当然是想找一下有没有现成的轮子可以用. ...
- android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解...
<Android实现获取短信验证码的功能以及自定义GUI短信验证详解>由会员分享,可在线阅读,更多相关<Android实现获取短信验证码的功能以及自定义GUI短信验证详解(8页珍藏版 ...
- c fread 快读 详解_梨的简笔画画法教程详解【彩色】__水果_水果简笔画图片_学画画网...
2020-10-20 11:43:58 来源:简笔画教程 作者: 小西 导读: 美味的梨的简笔画怎么画?梨的简单的画法教程,手把手的教你画梨的简笔画,喜欢就跟着教程一起来学吧. 梨的简笔画画法教程详解 ...
- android设备登录是什么手机_手机玩游戏屏幕太小,教你怎么一分钟把手机游戏画面投到大屏幕上...
把手机投屏到电脑上会带来很多便捷之处,尽管市面上部分手机屏幕的尺寸够大,但还是有很多手机屏幕不能满足我们的日常需求,例如玩一些大型游戏,屏幕小玩得不尽兴,相信很多人都会思考,有没有一些方法,可以将我们 ...
- 10截图时屏幕变大_手机上网课、开视频会议,如何让屏幕变大一点?
点击图片进入商城▲车载闪充49.9秒杀! Reno2 Z直降200元!真无线耳机团购可省130元! 这个特殊时期很多伙伴和小O一样在家远程云办公.线上会议学生朋友们也是在家参加网上课程虽然现在的手机屏 ...
- 苹果手机屏幕突然变暗_手机突然屏幕失灵
手机屏幕是手机重要的部件之一,如果在使用过程中出现手机屏幕失灵的情况如何解决,下面就为大家介绍一下手机突然屏幕失灵怎么办. 手机突然屏幕失灵 方法一: 1.关闭手机,取出电池,手机静置五分钟左右: 2 ...
- android bitmap 色温,色温对比度饱和度 屏幕量化测试_手机Android频道-中关村在线...
既然是1080p四核手机横评,那么本次横评的重点无疑在于屏幕与性能跑分.对于屏幕部分,我们依旧请出了去年横评时引入评测环节的BM-7A亮度色度仪对参与测试的机型进行了色温.饱和度.对比度的测试.这一设 ...
- iphone主屏幕动态壁纸_苹果手机动态主屏幕壁纸 苹果怎么导入动态壁纸
IPhone动态壁纸设置主屏幕为什么不会动? 苹果手机动态壁纸不动主要是因为一个设定成静态壁纸了,二是设定成主屏壁纸了.只需要将壁纸重新设置为锁屏屏幕壁纸,即可看到live动态壁纸效果了.iphone ...
最新文章
- Wireshark小技巧:将IP显示为域名
- 中层管理者,你到底怎样管理?
- 设计模式复习-迭代器模式
- 数据结构常见算法集锦
- HDU1272_并查集
- Tomcat线程连接池参数优化
- 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
- echart旭日图_海报级设计感的旭日图,就在 ECharts 4.0
- 基于FPGA实现ADC7768数据采集系统设计(8路)
- paip.提升用户体验---c++ qt 悬浮窗实现
- 2021-09-13Top-N 推荐系统,通常指的是个性化推荐系统,有别于热门推荐。
- 刀下留人--苹果开发者账号封号前挽救
- 提醒:使用过期Win10预览版后果很严重
- HTML---鼠标悬停导航栏变颜色
- 滑动速度监听VelocityTracker
- PostgreSQL 磁盘空间清理
- compile函数使用
- IT业台风警报(一)——望天
- 从新一期技术雷达看技术领域最新趋势
- Combating the Repatriation Blues