【发布时间】:2016-04-04 19:19:28
【问题描述】:
我是第一次尝试 CSS3 的 flexbox,它看起来很有希望,但我在让它正常运行时遇到了一些麻烦。
基本上,我希望 flexbox 表现得像一个表格,但有一个 order 属性,所以我可以在 CSS 中告诉它在网格中显示元素的顺序。这甚至可以通过 flexbox 实现吗?
这是我创建的测试页面:https://jsfiddle.net/Lb838dwf/
HTML:
<div id="main">
<div id="div1">div 1</div>
<div id="div2">div 2</div>
<div>generic</div>
<div id="div3">div 3</div>
<div>generic</div>
<div id="div4">div 4</div>
<div>generic</div>
<div>generic</div>
<div>generic</div>
<div>generic</div>
<div>generic</div>
</div>
CSS:
#main {
width: 100%;
border: 1px solid #c3c3c3;
display: -webkit-flex;
display: flex;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
}
#main div {
min-width: 25%;
height: 100px;
-webkit-flex: 1;
flex: 1;
-webkit-order: 2;
order: 1;
background-color: #ccc;
}
#main #div1 {
-webkit-order: 3;
order: 3;
background-color: coral;
}
#main #div2 {
-webkit-order: 5;
order: 5;
background-color: lightblue;
}
#main #div3 {
-webkit-flex: 2;
flex: 2;
-webkit-order: 2;
order: 2;
background-color: lightgreen;
}
#main #div4 {
-webkit-order: 4;
order: 4;
background-color: pink;
}
您可以看到#div3 有flex: 2,这意味着它应该跨越两列,但它只占用一列。此外,底部的 3 个 div(div1、div4、div2)未与其上方的项目对齐到相同的网格。如果我将max-width: 25% 添加到#main div 样式中,它会将所有内容保持在同一个网格中,但跨列不起作用。我尝试为所有 div 设置 max-width: 25% 并为 #div3(带有 flex:2 的那个)设置 max-width: none 但这没有影响。
【问题讨论】: