CSS3 - Flex包装不适用于IOS 10.1.1 Safari&铬

时间:2016-12-26 11:41:51

标签: ios css3 flexbox

我尝试使用flex wrap和min-width:50%来动态网格布局,其中单个单元格占据所有宽度。问题是它在iOS 10.1.1(iPhone 5c)Safari和Chrome中无法正常工作 - 显示不是网格状,而是水平布局。在桌面Chrome(Ubuntu)和Android Chrome工作正常。

Jsfiddle演示:https://jsfiddle.net/9dscc1Lq/

代码:

<style>

body {
    width: 300px;
}

.tabs {
    width: 100%;
    display: flex;
    display: -webkit-flex;
    flex-wrap: wrap;
    -webkit-flex-wrap: wrap;
    flex: 0 0 auto;
    -webkit-flex: 0 0 auto;
    box-sizing: border-box;
    flex-flow: row wrap;
    -webkit-flex-flow: row wrap;
}

.tab {
    border: 1px solid #3A3A3A;
    color: #929292;
    min-width: 50%;
    box-sizing: border-box;
    flex: 1 1 0;
    -webkit-flex: 1 1 0;
    text-align: center;
}

</style>

<div class="tabs">
    <div class="gwt-HTML tab">1</div>
    <div class="gwt-HTML tab">2</div>
    <div class="gwt-HTML tab">3</div>
    <div class="gwt-HTML tab">4</div>
    <div class="gwt-HTML tab">5</div>
</div>

预期布局(正确):

enter image description here

iOS行为(不正确): enter image description here

请指教!

1 个答案:

答案 0 :(得分:8)

if(! Array.isArray(classNames) ){ classNames = [classNames] } 在iOS上无法正常使用,请min-width使用flex-basis

Src:https://bugs.webkit.org/show_bug.cgi?id=136041

此外,使用前缀属性时,应始终将它们放在未加前缀的版本之前。

flex: 1 1 50%;
.tabs {
  width: 100%;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  box-sizing: border-box;
}
.tab {
  border: 1px solid #3A3A3A;
  color: #929292;
  box-sizing: border-box;
  -webkit-flex: 1 1 50%;
  flex: 1 1 50%;
  text-align: center;
}