【发布时间】:2016-03-13 07:10:16
【问题描述】:
我想使用 flexbox 创建一个包含三列的布局。中心栏应该是两个堆叠在一起的项目。像这样:
_______ _______ _______
| | top | |
| left |________| right |
| | bottom | |
|_______|________|_______|
我可以为固定高度的 flex 容器创建它,但我无法为动态高度的容器创建它。
HTML 结构必须是这样的。这种结构能做到吗?
<div class="container">
<div class="left"></div>
<div class="top"></div>
<div class="bottom"></div>
<div class="right"></div>
</div>
这是我尝试固定高度。我希望它根据.top 和.bottom 元素的内容垂直增长。
.container {
height: 200px;
width: 200px;
display: flex;
flex-direction: column;
flex-wrap: wrap;
}
.left,
.center,
.right {
background-color: rgba(0, 0, 0, 0.5);
}
.left {
background-color: green;
}
.top {
background-color: red;
}
.bottom {
background-color: blue;
}
.right {
background-color: violet;
}
.top,
.bottom {
flex: 1 0 50%;
}
.left,
.right {
flex: 0 1 100%;
}
<div class="container">
<div class="left">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est.</p>
</div>
<div class="top">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
</div>
<div class="bottom">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
</div>
<div class="right">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est.</p>
</div>
</div>
【问题讨论】:
-
我在你更改之前就开始了,它已被删除。 @Paulie_D?或@Andreas A? -_o
-
由于不更改布局的标准是如此强烈强制执行,我将重复我从已删除的答案中所说的话:flexbox 的流程总是依赖于父母的 flex-direction 以及它如何影响它的直接后代(即孩子)。当您希望一组盒子垂直流动而另一组盒子水平流动时,我不认为只有一个弹性容器是可能的。
-
需要将一组与弹性容器的影响隔离开来,否则如果一个容器是行的,它们会水平跟随,如果你只有一个弹性列,那么所有的东西都会垂直流动。有 align-self 但它不会改变弹性项目的方向,只是对齐。