Bootstrap 是 mobile-first,这意味着我们在较小断点处定义的任何内容都将级联到较大的断点,直到被覆盖。
除了隐式(默认)移动断点外,还有5个显式breakpoints:
| Breakpoint | Dimensions
|------------|-----------
| NONE | <576px
| sm | ≥576px
| md | ≥768px
| lg | ≥992px
| xl | ≥1200px
| xxl | ≥1400px
调整divs的大小
将columns 与响应式断点语法一起使用:
<div class="row g-2">
<div class="col-12 col-md-6">...</div>
...
</div>
-
col-12 指定移动设备及以上设备的全宽(12 个,共 12 个)
-
col-md-6 指定 md 及以上的半宽(12 个中的 6 个)(即,从 md 开始,此规则覆盖 col-12 规则)
-
g-2 指定 gutters 自动填充列(或使用手动 spacing 实用程序)
请注意,书面顺序(col-12 col-md-6 vs col-md-6 col-12)是无关紧要的,与任何 css 类一样。 Bootstrap 按mobile-first 顺序应用样式。
自动展开最后一个div
但是,如果我不知道行内将有多少 divs,因此不知道它们的数量是奇数还是偶数,该怎么办?不知道哪个确切的 div 将是最后一个,但仍需要容器内的最后一个 div 为 100% 宽度?
如果您使用模板语言,我建议将此逻辑放入模板中。这有点超出这个问题的范围,但例如使用 django,最小模板可能如下所示:
<div class="row">
{% for col in cols %}
<div class="col-12{% if loop.last and not forloop.counter|divisibleby:2 %} col-md-6{% endif %}">
...
</div>
{% endfor %}
</div>
或者要使用纯 css 来处理它,您可以添加一个 width 规则,如果奇数则针对最后一个 col:
.row > .col-md-6:last-child:nth-child(odd) {
width: 100%;
}
重新排序divs
使用响应式flex order utilities:
<div class="row">
<div class="order-2 order-md-1">...</div>
<div class="order-1 order-md-2">...</div>
...
</div>
-
order-2 order-md-1 指定位置 2 在 mobile 及以上,位置 1 在 md 及以上
-
order-1 order-md-2 指定位置 1 在移动及以上,位置 2 在md 及以上
请注意,父容器必须是flex container。默认情况下,引导程序 row 是 flex,但对于非 flex 容器,请显式添加 d-flex 类。
小例子
.row > .col-md-6:last-child:nth-child(odd) {
width: 100%;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">
<body class="bg-secondary">
<div class="container pt-3">
<div class="row g-2">
<div class="col-12 col-md-6 order-2 order-md-1">
<div class="bg-light text-center p-2">DIV 1</div>
</div>
<div class="col-12 col-md-6 order-1 order-md-2">
<div class="bg-light text-center p-2">DIV 2</div>
</div>
<div class="col-12 col-md-6 order-3">
<div class="bg-light text-center p-2">DIV 3</div>
</div>
<div class="col-12 col-md-6 order-4">
<div class="bg-light text-center p-2">DIV 4</div>
</div>
<div class="col-12 col-md-6 order-5">
<div class="bg-light text-center p-2">DIV 5</div>
</div>
</div>
</div>
</body>