【发布时间】:2018-11-02 04:51:47
【问题描述】:
我正在尝试实现如图所示的响应式布局,左侧是移动设备,右侧是桌面。如果我可以为包装器设置一个固定的高度,那么使用 flexbox 会相对容易,但是因为内容是动态的,所以这是不可能的。
另一种解决方案是在元素 C 上使用绝对位置,但这似乎很 hacky,我希望找到一个更优雅的解决方案。
这是代码的框架:
.wrapper {
display: flex;
flex-direction: column;
}
@media(min-width: 800px) {
.wrapper {
flex-direction: row;
flex-wrap: wrap;
}
}
.section {
display: flex;
justify-content: center;
align-items: center;
font-size: 36px;
}
.section-a {
background: green;
height: 200px;
}
@media(min-width: 800px) {
.section-a {
flex-basis: 33%;
}
}
.section-b {
background: yellow;
height: 400px;
}
@media(min-width: 800px) {
.section-b {
flex-basis: 66%;
}
}
.section-c {
background: blue;
height: 200px;
}
@media(min-width: 800px) {
.section-c {
flex-basis: 33%;
}
}
<div class="wrapper">
<div class="section section-a">A</div>
<div class="section section-b">B</div>
<div class="section section-c">C</div>
</div>
感谢您的帮助!
【问题讨论】:
-
我将为此使用 CSS-Grid...我确信这已经被覆盖过...我会看看我是否能找到一个重复的。
-
@syberen 检查我的更新答案
-
我认为 flex 使用你的布局是不可能的,而不会给包装器添加某种高度限制,但也许这会给你一些想法:stackoverflow.com/questions/19574851/…
-
即使内容是动态的,是什么阻止您使用
overflow-y: auto或仅使用overflow: auto?我个人还是会选择 Flexbox。 -
有趣的想法,没有考虑到。我明天试试看。