android软键盘@media 横竖屏兼容

前言

通常我们在写wap的时候 横竖屏切换会使用到@media媒体查询来实现的。但我最近在一个android的项目,在webview使用媒体查询来做横竖屏区分。点击input输入框,会显示android的软键盘,而这会导致本来是竖屏的界面,变成横屏的。

@media all and (orientation : landscape) {  //横屏}
@media all and (orientation : portrait){ //竖屏 }

这里写图片描述

portrait和landscape

出现这个问题我们首先要分析portrait和landscape这个2个是怎样区分的。portrait是通过输出设备中的页面可见区域高度大于或等于宽度,landscape是除portrait值情况外,都是landscape。而软键盘出现会改变可见区域的尺寸,导致变成竖屏转成横屏模式。

名词说明
portrait指定输出设备中的页面可见区域高度大于或等于宽度
landscape除portrait值情况外,都是landscape

如何解决

通过网上搜索发现其他人也遇到同样的问题,早就有人提出完美解决办法,是通过@media媒体查询中aspect-ratio(输出设备中的页面可见区域宽度与高度的比率),通过设置小于13/9比率为横屏,大于13/9比率就为竖屏。通过比率来区分横竖屏,可以有效地兼容软键盘出现的问题。

@media screen and (min-aspect-ratio: 13/9){ } // landscape
@media screen and (max-aspect-ratio: 13/9){ } // portrait
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值