我正在尝试制作如下所示的布局:
在 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-block
在sm
和 up 上禁用 Flexboxfloat-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/