【问题标题】:Rearranging responsive Bootstrap 4 grid layout重新排列响应式 Bootstrap 4 网格布局
【发布时间】:2019-08-11 08:27:27
【问题描述】:

假设您有一个包含四个主要块的页面(每个块包含不同数量的内容):

<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>

在较窄的浏览器宽度下,它们应该以与它们在 HTML 中相同的顺序出现:

但是在更宽的宽度上,它们应该重新排列成这种布局,带有侧边栏,块的顺序不同:

使用 Bootstrap 4 的网格布局有没有办法做到这一点?我可以看到如何reorder 块,但这似乎只适用于同一行中的块。

更新:第二个布局可以这样完成,但我看不出有什么方法可以让它看起来像第一个布局:

<div class="container">
  <div class="row">
    <div class="col-sm-9">2</div>
    <div class="col-sm-3">
      <div>3</div>
      <div>1</div>
      <div>4</div>
    </div>
  </div>
</div>

【问题讨论】:

  • 我认为这种特殊情况不能像您需要的那样仅使用 Flexbox 来完成;我认为更适合 CSS Grid;正如你所说;为了使订单类别像所有元素都需要在同一行上一样工作;并且该布局不允许它....另一种选择是在某些尺寸上隐藏一列
  • @Zim 如果我有任何有用的代码,那么我会......但我会回答我自己的问题:)
  • 谢谢@IvanS95 我想可能是这样,但想知道我是否错过了什么。 Flexbox 只适用于一系列块(水平或垂直),而不是完全重新排列事物......
  • @Zim 我已经为第二个布局添加了示例代码,但我不确定这是否有帮助。

标签: bootstrap-4


【解决方案1】:

基本上这是asked before。 Bootstrap 4 有一种方法,但您需要使用 floats 而不是 flexbox。

这里d-sm-block 用于仅在sm 和更宽的范围内应用浮动。 Flexbox 用于移动设备,允许订购工作。

<div class="row d-sm-block">
    <div class="col-sm-9 order-2 order-md-0 float-left">2</div>
    <div class="col-sm-3 order-3 order-md-0 float-right">3</div>
    <div class="col-sm-3 order-1 order-md-0 float-right">1</div>
    <div class="col-sm-3 order-4 order-md-0 float-right">4</div>
</div>

演示:https://www.codeply.com/go/ksaw8Aq2lP

【讨论】:

  • 可以使height 对两个“列”相同吗?
  • 那是狡猾的 Zim,谢谢!我会玩这个。 fwiw 我不希望列的高度相同,但@IvanS95 显然要求更高:)
  • 是的;在 codeply 中,元素 2 看起来比其他元素高一点;其他 3 个元素也可以与之对齐吗? (我只是好奇哈哈)
  • 是的,这不是 OP 在更宽的布局图像中显示的内容。我假设 2 和图片一样高。
猜你喜欢
  • 2012-10-01
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2019-07-03
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多