需要使用media query作个别设备的适配时。例如对于iPhone X,设备的高度(css px单位)为812
通常在前端开发时,这样写就可以
[@media](/user/media) screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) {
}
但在小程序开发时,在*.wxss中按上述写法,在真机上可以work,在工具上不work
如果把上述代码中的device-height: 812px 改为 device-height: 724px,这时工具上反而可以work,真机则不work
因为724px是从小程序的标题栏下边缘开始到屏幕底部的长度,也就是viewport的高度
猜测这里是不是小程序开发工具的media-query的device-height的取值实现有问题。
(代码片段中有两个方形,两个方形各自使用device-height为812px和724px赋予了一段样式。如果这个bug存在,那么预期结果是:真机(iPhone X手机)上,左边的方形出现红色下划线;开发者工具(选择模拟设备为iPhone X)上,右边的方形出现红色下划线
--------------------
更新一下我们实际开发的app中遇到的情况。需要适配的是,当手机为iPhone X时,为购买按钮下方增加一些空白以留出触控条
- 当wxss代码为如下(device-height取812)时
[@media](/user/media) screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) {
}
真机和工具的表现如下:(真机中样式生效,工具中样式不生效)
- 当wxss代码为如下(device-height取724)时
[@media](/user/media) screen and (device-width: 375px) and (device-height: 724px) and (-webkit-device-pixel-ratio: 3) {
}
真机和工具的表现如下:(真机中样式不生效,工具中样式生效)
我的程序中也遇到 media query 判断iPhone X,也遇到和你一样的问题。
最后同时加上了两段代码:
/* follow heigh=812px only work for real phone: iPhone X */ [@media](/user/media) screen and (device- width : 375px ) and (device- height : 812px ) and (-webkit-device-pixel-ratio: 3 ) { .tag_max_width { white-space : nowrap !important ; max-width : 220px ; } } /* follow heigh=724px only work for weixin iPhone X emulator */ [@media](/user/media) screen and (device- width : 375px ) and (device- height : 724px ) and (-webkit-device-pixel-ratio: 3 ) { .tag_max_width { white-space : nowrap !important ; max-width : 220px ; } } |
使得同时让 模拟器(微信开发者工具)和 真机 都生效。