问题的产生

因为各方面原因,要用网页做界面,开发一个APP.内核使用的是腾讯的x5内核.

把外壳交给前端和设计测试的时候,都汇报:状态栏的颜色太不搭配了,要求可修改

遂启用了安卓4.4版本开始支持的沉浸式状态栏,打算把状态栏交给前端去自己绘制.

并提供了API,可以获取状态栏的高度.

没多久,前端报告,返回的高度有问题,比状态栏高很多.

于是我测了下,api返回的状态栏高度:55像素.

使用 安卓开发者工具 里的坐标测量工具测了下,状态栏高度的确是55像素左右

让前端好好检查他的代码.

然而前端态度嚣张嚷嚷着自己的代码绝对没问题,并怼了我一番.

这能忍?

我要解决它,并证明这个坑是前端的坑,他解决不了是因为他水平不够.

发现产生问题的原因

于是我在API测试页面,做了个红色div,调用api获取状态栏高度,并设为div高度,测了下:

的确比状态栏高了很多,而且还2倍以上

我起初以为是js运算过程一些变量转换的问题,尝试在css强行给div的height赋值 "55px",然而我得到了一样的结果.

顺手查了下分辨率,突然发现,这网页的分辨率..居然只有699x393?!:

但是我的手机屏幕可是1920x1080的!

于是得出结论,这个页面的缩放比例有问题!

本来这个问题只要我提供给API,让js能够获取到屏幕的宽高也就能解决了,但是我前面提到过:

我要证明这是个前端的坑,他水平不够,没能解决

所以:

我得解决它,而且还是从前端方面解决

解决问题的过程

起初我尝试用很多方法,去获取屏幕的宽高也就是1920x1080

只要有了这个,我就能计算出缩放比例,把状态栏高度缩放一下.就可以解决这个问题

在网上搜索了很多文章,类似这样的:

https://blog.csdn.net/gs6511/article/details/53900761

各种尝试,最后均只能得到缩放后的699*393,硬件分辨率无法得到.

于是我在控制台输入

window

尝试把大部分对象列出来,试图不依靠网上的答案,自己寻找到屏幕分辨率.然而window对象列出来的东西虽然很多.但我并没有找到我要的屏幕分辨率.

无意间发现这么一个:

嗯!?这个名称?

这个难道就是我要的屏幕缩放比例?

上网搜索了下.找到了这个:

https://developer.mozilla.org/zh-CN/docs/Web/API/Window/devicePixelRatio

结果

也就是说,我只要把状态栏的高度,除以这个属性,就能得到缩放后该有的高度.

于是乎改了代码,测试一番:

perfect

可以!果断打前端的脸去~

解决使用web开发手机网页关于分辨率被缩放的坑的更多相关文章

  1. 彻底理解和解决移动WEB开发中CLICK点透问题

    在移动WEB开发中,有时候可能会出现点透问题,本文将围绕这个TAP点透问题,详细的讲述到底什么是点透,为什么会出现点透,如何避免出现点透,如果不可避免的出现了,如何解决解决移动WEB开发中CLICK点 ...

  2. @media screen解决移动web开发的多分辨率问题

    当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240 ...

  3. 使用@media screen解决移动web开发的多分辨率问题

    当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240 ...

  4. PrintArea打印,@media screen解决移动web开发的多分辨率问题,@media print设置打印的样式

    PrintArea打印,局部DIV打印插件,依赖JQuery. github:https://github.com/RitsC/PrintArea 当打印时需要临时改变页面布局,可以使用 @media ...

  5. angular开发手机网页小记

    禁用滑动事件,阻止触发浏览器翻页行为   <html lang="en" style="height:100%" ontouchmove="(f ...

  6. web开发——在网页中引用字体包(.ttf),即嵌入特殊字体

    在写html时,有点时候需要显示一些特殊字体,不过这些特殊字体是系统一般不自带的,这时就需要我们自行加载要用的字体.方法如下: 1.首先在style里添加: @font-face { font-fam ...

  7. 移动web开发填坑(一)

    上周开始接触移动web开发,默默的掉进了很多坑里面.本文主要总结本周遇到的坑以及如何填坑. 1.px与rem换算. 设计稿的宽度一般是640px,而iphone是320px,所以测量设计稿的结果首先要 ...

  8. mobile&nbsp;web&nbsp;手机开发

    1.   -webkit-tap-highlight-color -webkit-tap-highlight-color:rgba(255,255,255,0); 用来把android上点击网页时出现 ...

  9. 安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)

    一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调 ...

随机推荐

  1. 基于JWT标准的用户认证接口实现

    前面的话 实现用户登录认证的方式常见的有两种:一种是基于 cookie 的认证,另外一种是基于 token 的认证 .本文以基于cookie的认证为参照,详细介绍JWT标准,并实现基于该标签的用户认证 ...

  2. 这次彻底理解了Object这个属性

    1.实例化Object对象 实例化Object对象的方式有两种:使用Object构造器和使用对象的字面量.例如: var person1 = { name: '李四' }; var person2 = ...

  3. Hibernate HQL中的子查询

    子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在Hibernate中HQL查询同样对子查询功能提供了支持.   如下面代码所示: List list=s ...

  4. Hive:有表A与表B进行inner join,如果A分组内包含有数据,使用A,否则使用B分组下的数据

    tommyduan_fingerlib 指纹库 栅格小区级别数据tommyduan_mr_grid_cell_result_all 统计 栅格小区级别数据业务:以tommyduan_mr_grid_c ...

  5. easygui控件介绍

    1.msgbox: 语法:msgbox(text,title, ok_button='OK',image=None,root=None) 实例:msgbox('内容内容','标题标题','确定')返回 ...

  6. linux(centos)常用命令

    原文:https://blog.csdn.net/zhangzhikaixinya/article/details/44538571 1.查看当前所在路径:pwd 2.新建文件夹www:mkdir w ...

  7. springcloud分布式事务终极探讨

    2018阿里云全部产品优惠券(好东东,强烈推荐)领取地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userC ...

  8. Mysql单表查询(胖胖老师)

    数据准备drop table if exists class;create table class(    class_no int(2) unsigned zerofill primary key ...

  9. 系统引导修复 ---- Windows 和 Ubuntu

    Windows: 1.准备windows相应镜像盘,u盘启动该系统 (以下均为windows10安装界面) 2.进入安装界面<语言,时间,键盘格式>,点击"下一步" 3 ...

  10. Python3玩转儿 机器学习(2)

    机器学习的基本任务 分类任务 回归任务 分类任务 手写输入数字识别 分类任务: 二分类任务 判断邮件是垃圾邮件或者不是垃圾邮件 判断发放给客户信用卡有风险或者没有风险 判断病患良性肿瘤还是恶性肿瘤 判 ...