手机页面获取屏幕高度那些事
来源:互联网 发布:无人深空优化差 编辑:程序博客网 时间:2024/05/18 03:58
在做移动端页面的时候,经常会遇到需要获取屏幕的高度和宽度,进行一些特殊效果的处理或者兼容。比如在做全屏滑动上下翻页的效果(不出现滚动条),这种就需要页面加载时获取到屏幕的高度,然后才能定义,每一屏的高度。以前做pc页面时,才会说这个高度的获取会有兼容问题,clientHeight、offsetHeight 和scrollHeight的各种讨论和兼容处理已经很多了。但是在移动端,主要还是考虑webkit内核,那应该不存在这种兼容问题的啊!
但事实并非如此,在移动端设备上同样因为有各种浏览器,对上面获取高度的解析不一样,导致获取的高度不一致的问题。
后来我们发现,我们上面三个方法都是基于document下的元素的,比如document.body.clientHeight、document.body.offsetHeight、document.body.scrollHeigh;我们忽略了一个window的方法:innerHeight,所以准确的说我们获取屏幕高度的方法有四个。
我们这里的测试条件是,假如页面没有滚动条,都是一屏内容(因为我们经常是在做那种满屏滚动的专题页面才需要获取屏幕高度),系统是IOS8.1,浏览器包括Safari、chrome、UC、QQ、微信内部。
演示
可以点击上面的演示页面,扫二维码在手机测试。
这里说一下我的测试结果(iPhone5)
Safari
alert(document.body.clientHeight);
//460
alert(document.body.offsetHeight);
//460
alert(document.body.scrollHeight);
//460
alert(window.innerHeight);
//460
chrome(chrome是没有底部工具条的)
alert(document.body.clientHeight);
//504
alert(document.body.offsetHeight);
//504
alert(document.body.scrollHeight);
//504
alert(window.innerHeight);
//504
UC
alert(document.body.clientHeight);
//504
alert(document.body.offsetHeight);
//504
alert(document.body.scrollHeight);
//504
alert(window.innerHeight);
//460
QQ
alert(document.body.clientHeight);
//500
alert(document.body.offsetHeight);
//500
alert(document.body.scrollHeight);
//500
alert(window.innerHeight);
//452
微信内部(也是是没有底部工具条的)
alert(document.body.clientHeight);
//504
alert(document.body.offsetHeight);
//504
alert(document.body.scrollHeight);
//504
alert(window.innerHeight);
//504
通过上面的数据分析,我们发现主要是UC和QQ在用这四种方法去获取高度时,表现的数据是不一致的,所以如果我们使用前面三种(clientHeight、offsetHeight、scrollHeight)得到的高度去定义页面的高度,在UC和QQ下,页面的底部内容被底部的工具条遮挡住了,因为他们的的高度计算是忽略了工具条的存在。
所以这里建议,在手机页面获取屏幕高度时,尽量使用window.innerHeight,以最大的范围兼容各种浏览器。
而对于安卓的机子,因为安卓系统版本比较多,我这里测试了安卓4.1以上的浏览器包括chrome、UC、QQ、微信内部,发现UC和QQ并没有存在IOS上面的问题,四种方法获取到的高度都是一致的!!终于发现安卓也有优胜的地方了~
本文由 w3cmark_前端笔记 版权所有,转载时请注明出处。
注明出处格式:w3cmark (http://www.w3cmark.com/2014/341.html)
- 手机页面获取屏幕高度那些事
- 手机Web开发 jQuery 获取屏幕高度、宽度
- 手机Web开发 jQuery 获取屏幕高度、宽度
- Android手机获取屏幕分辨率(屏幕高度和宽度)
- Android基础知识积累之手机获取屏幕宽度高度
- 手机Web开发 jQuery 获取屏幕高度、宽度
- javaScript获取页面,屏幕等高度与宽度
- JavaScript获取屏幕和页面的宽度和高度
- JS获取屏幕,浏览器,页面高度及宽度
- HTML 获取屏幕、浏览器、页面的高度宽度
- HTML 获取屏幕、浏览器、页面的高度宽度
- HTML 获取屏幕、浏览器、页面的高度宽度
- HTML 获取屏幕、浏览器、页面的高度宽度
- javascript获取屏幕高度
- Android获取屏幕高度
- android获取屏幕高度
- 获取屏幕高度
- js获取屏幕高度
- Xcode小知识: 1.修改Xcode自带模板
- 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM
- 二度整理交换机有感
- 当所谓的真爱变成回忆的时候
- LeetCode - Word Ladder II 题解
- 手机页面获取屏幕高度那些事
- HDOJ第一页水题集
- LaTeX-03
- MyBatis+MySQL 返回插入的主键ID
- java编译警告:使用了未经检查或不安全的操
- Perl 采集磁盘信息
- 删除System Volume Information
- *(char**) 与 (char*) 的区别
- 今天是个伟大日子!哈哈