css - 如何修复 Bootstrap 4 中意外的列顺序?

标签 css flexbox bootstrap-4

我正在尝试制作如下所示的布局:

desired layout

xs 设备上,我希望顺序为第一-第二-第三。

我的示例代码是:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
    <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
    <style type="text/css">
     div.short  { height: 100px; background-color: rgb(174, 199, 232); }
     div.medium { height: 200px; background-color: rgb(255, 187, 120); }
     div.tall   { height: 400px; background-color: rgb(152, 223, 138); }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="row">
        <div class="col-sm-4 short order-sm-9">
          First column (short)
        </div>
        <div class="col-sm-8 medium order-sm-1">
          Second column (medium)
        </div>
        <div class="col-sm-4 tall">
          <p>Third column (tall)</p>
          <p>
            How to keep this <em>under</em> the first (blue) column
            when on <code>sm</code> or larger devices, while
            preserving the first-second-thrid order on <code>xs</code>
            devices?
          </p>
          <p>
            And why are these narrower columns on the left, rather
            than right?
          </p>
        </div>
      </div>
  </body>
</html>

发生的情况是第一列和第三列最终颠倒在左侧。

最佳答案

Bootstrap 4 使用 Flexbox,因此列的高度始终相等,并且您将无法在较大的屏幕上获得所需的布局。解决方案是禁用 sm 及以上版本的 Flexbox。使用浮子,使第三个较高的列浮到右侧。 Flexbox order- 将在移动设备 (xs) 上运行。

https://codeply.com/go/c31HUTtXra

<div class="container">
    <div class="row d-sm-block">
        <div class="float-left col-sm-8 medium order-2">
            Second column (medium)
        </div>
        <div class="float-left col-sm-4 short order-1">
            First column (short)
        </div>
        <div class="float-left col-sm-4 tall order-3">
            <p>Third column (tall)</p>
            ..
        </div>
    </div>
</div>
  • d-sm-blocksm 和 up 上禁用 Flexbox
  • float-left 在禁用 Flexbox 时 float 列,以便高列向右换行
  • order-* 在移动设备上获取所需订单

相关:
Bootstrap with different order on mobile version
Empty vertical space between columns in Bootstrap 4

关于css - 如何修复 Bootstrap 4 中意外的列顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49306652/

相关文章:

html - Flexbox 包装特定内容

html - 显示 Flex 元素居中对齐

html - 无法使用 Bootstrap 4 在页眉和页脚之间设置 100% 的 div 高度

css - 当在移动设备或平板电脑上查看网站时,通过隐藏 thumbnails_wrapper 使我的网站响应

创建嵌套 ul li 的 PHP 函数?

html - 带有图像的 Bootstrap 输入组

html - 其他元素堆叠在一起,我已经将它们的容器设置为位置 :relative;

html - 按类别将元素分成 2 列

javascript - 阴影和圆圈数 Carousel Bootstrap 4

css - Bootstrap 4 垂直对齐不起作用