Flexbox:单列到堆叠的多列

Posted

技术标签:

【中文标题】Flexbox:单列到堆叠的多列【英文标题】:Flexbox: Single Column to Stacked Multi-Column 【发布时间】:2015-07-11 21:09:30 【问题描述】:

我经常遇到这种布局问题:

小屏幕 - 项目堆叠在一行中,通常是一张图片,然后是一些文本,然后是一个较小的子区域,用于额外的杂项:

中屏及以上 - 项目重新排列为 2 列,左侧为图像和其他内容,右侧为文本:

我觉得我应该可以使用 flexbox 来做到这一点,但我不知道怎么做。我知道我可以使用以下方法排列列中的项目:

.container 
    display: flex;
    flex-flow: column wrap;

.one,
.two,
.three 
    width: 50%;

.one 
    order: 1;

.two 
    order: 3;

.three 
    order: 2;

但问题是似乎没有办法在不设置固定高度的情况下将项目分成 2 列,这显然不适合响应式。

有没有办法强制柱子在某些点断裂?

【问题讨论】:

【参考方案1】:

你可以这样做。通过使宽度为移动尺寸 100%。他们占据了自己的路线。

.container 
    width: 75%;
    margin: 0 auto;

.box1, .box2, .box3 
    width: 50%;

.box1 
    background-color: blue;
    float:left;

.box2 
    background-color: green;
    float: right;

.box3 
    background-color: purple;
    float: left;

@media screen and (max-width: 800px) 
    .box2 
        float: left;
    

    .box1,.box2,.box3 
        width: 100%;
    


JSFIDDLE

【讨论】:

抱歉,如果您在一秒钟前查看过...现在查看。

以上是关于Flexbox:单列到堆叠的多列的主要内容,如果未能解决你的问题,请参考以下文章

Flexbox在垂直堆叠的盒子上保持相等的高度[重复]

有没有办法使用 flexbox 语法将 div 堆叠在一起?

将 flexbox 网格转换为具有不同顺序的堆叠

堆叠的 flexbox 垂直居中在 chrome 中不起作用

使用 flexbox CSS 的左列和堆叠的右列 [重复]

如何使用 Flexbox 创建多列和多行 [重复]