解决使用web开发手机网页关于分辨率被缩放的坑
问题的产生
因为各方面原因,要用网页做界面,开发一个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开发手机网页关于分辨率被缩放的坑的更多相关文章
- 彻底理解和解决移动WEB开发中CLICK点透问题
在移动WEB开发中,有时候可能会出现点透问题,本文将围绕这个TAP点透问题,详细的讲述到底什么是点透,为什么会出现点透,如何避免出现点透,如果不可避免的出现了,如何解决解决移动WEB开发中CLICK点 ...
- @media screen解决移动web开发的多分辨率问题
当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240 ...
- 使用@media screen解决移动web开发的多分辨率问题
当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240 ...
- PrintArea打印,@media screen解决移动web开发的多分辨率问题,@media print设置打印的样式
PrintArea打印,局部DIV打印插件,依赖JQuery. github:https://github.com/RitsC/PrintArea 当打印时需要临时改变页面布局,可以使用 @media ...
- angular开发手机网页小记
禁用滑动事件,阻止触发浏览器翻页行为 <html lang="en" style="height:100%" ontouchmove="(f ...
- web开发——在网页中引用字体包(.ttf),即嵌入特殊字体
在写html时,有点时候需要显示一些特殊字体,不过这些特殊字体是系统一般不自带的,这时就需要我们自行加载要用的字体.方法如下: 1.首先在style里添加: @font-face { font-fam ...
- 移动web开发填坑(一)
上周开始接触移动web开发,默默的掉进了很多坑里面.本文主要总结本周遇到的坑以及如何填坑. 1.px与rem换算. 设计稿的宽度一般是640px,而iphone是320px,所以测量设计稿的结果首先要 ...
- mobile web 手机开发
1. -webkit-tap-highlight-color -webkit-tap-highlight-color:rgba(255,255,255,0); 用来把android上点击网页时出现 ...
- 安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)
一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调 ...
随机推荐
- vue2.0+koa2+mongodb实现注册登录
前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道 ...
- maven的使用之一简单的安装
首先,我们知道,在传统的项目中,我们会导入一堆的jar包,那样的话,我们会发现我们的jar包的大小已经占了整个项目大小的90%以上,甚至更多,而且,我们的jar包只能自己使用,如果 其他人想用的话,还 ...
- ssh整合之一spring的单独运行环境
这是本人第一次写博客,不足之处,还希望各位园友指出,在此先谢谢各位了! 先说我们的这三大框架,即struts,spring,hibernate,我们要进行整合的话,第一步是先单独搭建我们的Spring ...
- Python中使用hashlib进行加密的简单使用
import hashlib ''' 原文= '字符串' 哈希加密对象 = hashlib.加密算法( 原文.encode('utf-8') ) 密文 = 哈希加密对象.hexdigest() #密文 ...
- django中图片的上传和显示
上传图片实际上是 把图片存在服务器的硬盘中,将图片存储的路径存在数据库中. 1 首先要配置文件上传的路径: 1.1 建立静态文件目录 在项目根目录下 新建一个 static文件夹,下面再建立一个med ...
- JavaScript实现接口的三种经典方式
/* 接口:提供一种说明一个对象应该有哪些方法的手段 js中有三种方式实现接口: 1 注释描述接口 2 属性检测接口 3 鸭式辨型接口 */ /* 1 注释描述接口: 不推荐 优点: 利用注解,给出参 ...
- python继承——封装
python继承--封装 1 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度 2 封装分为两个层面 第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空 ...
- shell入门笔记2:字符串、数组、echo与printf
说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell字符串 字符串可以用单引号,也可以用双引号,也可以不用引号. 1 #!/bin/bash 2 ...
- [SPOJ 4155]OTOCI
Description 题库链接 给你 \(n\) 个节点,让你兹磁以下操作,维护一棵树: 动态加边: 修改点权: 询问路径上点权和. \(1\leq n\leq 30000\) Solution 好 ...
- [SDOI 2013]森林
Description 题库链接 给你 \(n\) 个节点,初始 \(m\) 条边, \(t\) 组操作.让你支持: 询问树上路径点权 \(K\) 小: 支持加边操作. 强制在线,所有状态保证是一个树 ...