我尝试使用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>
预期布局(正确):
请指教!
答案 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;
}