华为P30等手机对H5的部分不兼容问题【踩坑记录】

本文详细解析了在华为P30 Pro手机上遇到的H5页面兼容性问题,主要由于该手机自带浏览器对Flex布局支持有限。通过调整元素为block级并设置特定CSS属性,成功解决了页面换行的显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天做H5页面,在兼容性测试的时候,发现所有手机都兼容,只有华为p30pro这款手机不兼容,记录一下,下面效果对比。(公司新做的1元集盲盒活动,有兴趣的可以参与一下,关注沃小盒公众号,点击一元集盲盒参与即可)

1、解决思路:华为部分手机自带浏览器使用的UC低版本内核,对flex支持非常有限,所以使用flex,calc等属性的时候,有时添加-webkit、 -moz-calc等前缀也是无效的,其原因就是不能用行内、行内块元素,要改成block才能更好的支持flex,当元素使用flex:1时,要增加width:0%,且不能使用margin:0 auto;参考文章

2、具体问题:(有兴趣的可以看看,没兴趣的就直接看上面的解决办法就可以了)

废话不多说,看下什么问题(左边是其他手机正常的样式,右面是华为p30不兼容的样式)
在这里插入图片描述在这里插入图片描述
3、问题分析:看两张页面的对比,明显看出是换行了,因为我这里把右侧的点击获取验证码的按钮设置的是固定的宽,然后左边input使用的是calc设置的自适应宽度,理想情况下他是兼容一切手机屏幕宽度的适配属性,所以导致我一度的认为是华为p30这款手机的浏览器不兼容calc这个属性,导致没有width,而使用默认的width,而默认的width又太宽,导致左边input的width加上右面button的width大于屏幕的width导致换行了,然后我加了一些网上说的了类似于-webkit等等的前缀,又做了一个width:129px,设置了一个备用宽度,专门用于那些不兼容calc属性的浏览器,结果还是不尽人意,我再次尝试将左侧的按钮width变小,还是不行,至此,我们已经排除了这个calc不兼容的问题,后来发现原来是华为p30pro这款手机自带浏览器版本过低导致的浏览器兼容问题,从而使得浏览器对flex的支持非常有限,所以使用flex,有时候添加了webkit前缀也是无效的;

4、解决办法:其原因是不能用行内、行内块元素,要改成block才能更好的支持flex,当元素使用flex:1时,要增加width:0%;且不能使用margin:0 auto;最终设置如下:

-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
display: block;
width: 0%;

下面是我自己的解决办法:
我将左侧的input设置成块级元素,此时,右侧的button一定是换行的,这时候我们可以使用flex,进行强制不换行,或者使用position属性的绝对定位,然后将父级元素设置成relative,这样使得更容易对右侧的button进行操作,最后完美的解决了这个小问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好像很好吃a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值