【问题标题】:Keep the first and last items in a flex box on one row while moving the rest beneath it将第一个和最后一个项目保留在一行的弹性框中,同时将其余项目移动到其下方
【发布时间】:2015-09-11 01:16:42
【问题描述】:

我有一个使用 flexbox 的导航栏,看起来像这样(正常屏幕宽度):

| div 1 ||                      div 2                    || div 3 |

我怎样才能使布局做到这一点:

| div 1 |              | div 3 |
|            div 2             |

当被压扁时(例如在手机屏幕上)?

这似乎是可能的,但它可能涉及 javascript,因为有一些元素的重新排序。我尝试使用order CSS 属性,但这不是我需要的。要移动我正在使用的行flex-flow

另外,我正在使用 GWT 创建这个页面。

【问题讨论】:

  • 我在移动设备上,所以我无法进行测试,但在我看来,更改顺序是第一件事(flexbox 会这样做),然后强制换行,大概是通过强制宽度,然后设置大小。将所有这些都包含在媒体查询中。可行,但这取决于您想要的实际外观。设计图像将是理想的。否则这个问题可能对 SO 来说太宽泛了。
  • @Pangloss 下面回答的结果是我需要的确切外观。我只需要使用 flexbox 来代替浮点数等等。

标签: css flexbox


【解决方案1】:

这是flex 解决方案,带有order + min-width 技巧。

查看 JsFiddle 演示,调整大小并查看。

.wrap {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}
.wrap > .a {
    background: lime;
    order: 1;
}
.wrap > .b {
    background: orange;
    order: 2;
    flex: 1;
}
.wrap > .c {
    background: aqua;
    order: 3;
}
@media screen and (max-width: 500px) {
    .wrap > .b {
        background: orange;
        order: 3;
        min-width: 100%;
    }
    .wrap > .c {
        background: aqua;
        order: 2;
    }
}
<div class="wrap">
    <div class="a">A</div>
    <div class="b">B</div>
    <div class="c">C</div>
</div>

您也可以在第一个(A)和最后一个(C)项上使用float,并在中间(B)项上设置clear,以实现小屏幕尺寸的布局变化。

查看 JsFiddle 演示,调整大小并查看。

.wrap {
    overflow: auto;
}
.wrap > .a {
    float: left;
    background: lime;
}
.wrap > .c {
    float: right;
    background: aqua;
}
.wrap > .b {
    overflow: auto;
    background: orange;
}
@media screen and (max-width: 500px) {
    .wrap > .b {
        clear: both;
    }
}
<div class="wrap">
    <div class="a">A</div>
    <div class="c">C</div>
    <div class="b">B</div>
</div>

【讨论】:

  • 这是一个很好的答案。问题是我必须使用 flexbox。而且我不相信floats 可以使用 flexbox。
  • @MiloGertjejansen 我玩的更多的是 flex,上面更新了,看看吧!
  • 这适用于 Chrome。您知道 Safari 和 Firefox 的任何解决方法吗?我在两者中都对其进行了测试,但没有按预期工作。
  • @MiloGertjejansen 对于 Firefox,它可能与 min-width 事物有关 - here,对于 Safari,您需要为所有属性添加前缀 - here
猜你喜欢
  • 2022-10-14
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 2020-07-25
  • 2019-12-30
  • 1970-01-01
相关资源
最近更新 更多