【发布时间】:2016-11-06 03:59:26
【问题描述】:
我正在使用 flexbox 并尝试进行一些复杂的布局操作。 我想创建一种简单的方法来进行移动优先布局,将一些 div 分配到桌面版本的侧边栏。
像这样:
Mobile Desktop
A D A B
B E
C C
D F
E
F
经过一些测试,我得到了这个解决方案:http://codepen.io/matheusoj/pen/MbWxoV
main {
display: flex;
justify-content: flex-start;
flex-direction: column;
flex-wrap: wrap;
height: 3000px;
align-content: center;
}
div {
width: 100%;
height: 400px;
align-self: flex-start;
}
.a {
background-color: #fc0;
height: 500px;
}
.b {
background-color: #c00;
}
.c {
background-color: #0c0;
}
.d {
background-color: #aaf;
height: 200px;
}
.e {
background-color: #ccc;
}
.f {
background-color: pink;
}
.clear {
width: 0;
flex-basis: 0%;
}
@media (min-width: 768px) {
.left {
order: 150;
width: 200px;
}
.center {
order: 250;
width: 600px;
}
.right {
order: 350;
width: 200px;
}
.a {
order: 201;
}
.e {
order: 202;
}
.clear {
width: 0;
flex-basis: 100%;
}
}
<main>
<div class="a center">A</div>
<div class="b right">B</div>
<div class="c center">C</div>
<div class="d left">D</div>
<div class="e center">E</div>
<div class="f center">F</div>
<!-- ".clear" is used to brake the columns, it should always be at the end -->
<div class="clear left"></div>
<div class="clear center"></div>
</main>
问题是<main> 元素需要一个固定的高度才能工作。我无法让它在流体高度下工作。
如果<main> 元素没有固定高度,是否可以实现相同的结果?
【问题讨论】:
-
我猜你需要给一个固定的高度,因为你使用 flex-wrap