现在带虚拟键盘的手机越来越多,又成功的为前端开发者找了个事做。在使用apicloud开发APP中,如果有自定义原生模块的化,有的时候需要避免虚拟键盘带来的一系列体验问题。获取虚拟键盘高度经查阅官方文档及论坛都没有找到答案,只能亲自操刀了,其实计算也是非常简单的
在最开始我觉得计算的话应该要知道逻辑分辨率与物理分辨率的比例,可是查完了文档也没找到获取屏幕像素比(dpr)的方法,只能从有限的接口中找方法了。
apicloud窗口尺寸获取接口:
- api.screenWidth //屏幕分辨率宽,数字类型
- api.screenHeight //屏幕分辨率高,数字类型
- api.winWidth //当前 window 宽度,数字类型
- api.winHeight //当前 window 高度,数字类型
经过查看接口所返回的值后得知:
- api.screenWidth 和 api.screenHeight 返回的是 物理像素分辨率。
- api.winWidth 和 api.winHeight 返回的是 逻辑像素分辨率。
由上面的信息写出代码:
function getNavigationBarHeight(){
var dpr=api.screenWidth/api.winWidth;
var height=api.screenHeight/dpr-api.winHeight;
height=height>Math.floor(height)?(Math.floor(height)+1):height;
return (height>0?height:0);
}
当前项目所使用的效果,完美的解决问题,再也不怕系统操作按键被遮挡啦
作者:黄河爱浪 QQ:1846492969,邮箱:helang.love@qq.com
公众号:
web-7258
,本文原创,著作权归作者所有,转载请注明原链接及出处。更多精彩文章,请扫下方二维码关注我的公众号