微信Flex布局的坑-兼容问题解决方案

最近微信H5改版总算是见识了Flex布局的好处与坑,好处是再也不用去计算list的宽度了,即使是去掉一个li也能自适应。

Posted by KUNG on May 17, 2016

最近微信H5改版总算是见识了Flex布局的好处与坑,好处是再也不用去计算list的宽度了,即使是去掉一个li也能自适应。坑就是安卓端出现的不兼容搞得蛋蛋疼,临到要上线还在改这个bug。(如图iphone5s和华为荣耀7增减按钮变形了)

开始写这个地方的页面的时候,满心欢喜的各种display:flex;flex:1;然后开心得用自己手中iphone5s(系统9.0+)测试,一切正常。然而测试那边用了各种安卓机器,测出了上图中的问题。最后绞尽脑汁度娘到大漠老师写的文章《使用Flexbox:新旧语法混用实现最佳浏览器兼容》 算是发现新大陆了。然后这个兼容性问题就迎刃而解了^.^

修复后的页面代码如下:

 <div class="rcfs rcfsBtn">
    <input type="button" value="-" /> 
    <input id="result" maxlength="8" type="text" value="1" /> 
    <input type="button" value="+" />
 </div>

修复后的css代码如下:

.item2 .rcfsBtn input[type='button'] {
    -webkit-box-flex: 2;      /* OLD - iOS 6-, Safari 3.1-6 */
    -moz-box-flex: 2;         /* OLD - Firefox 19- */
    width: 20%;               /* For old syntax, otherwise collapses. */
    -webkit-flex:2;          /* Chrome */
    -ms-flex:2;              /* IE 10 */
    flex:2;                  /* NEW, Spec - Opera 12.1, Firefox 20+ */
    justify-content: center;
    align-items: center;
    line-height: 38px;
    padding: 0;
    font-size: 16px;
    font-weight: bolder;
}
.item2 .rcfsBtn input[type='button']:first-child{
    -webkit-box-ordinal-group: 1;
    -moz-box-ordinal-group: 1;
    -ms-flex-order: 1;
    -webkit-order: 1;
    order:1;
}
.item2 .rcfsBtn input[type='button']:last-child{
    -webkit-box-ordinal-group: 3;
    -moz-box-ordinal-group: 3;
    -ms-flex-order: 3;
    -webkit-order: 3;
    order:3 ;
}

语法中,只需要把有兼容问题的地方设置好宽度,然后余下的宽度会自动填充空间。如果不给他们显式的设置宽度,在有些安卓机型中会直接崩溃。