如果您想使用 flexbox 实现此目的,您可以执行以下操作:
为 Bootstrap 的 row 类创建一个类修饰符。
.row--flex {
display: flex; /* Creates a flex container. */
flex-wrap: wrap; /* Wrap columns, now flex-items. */
}
由于 Bootstrap 的 col-* 类已经使用媒体查询为每个视口设置了不同的 width 百分比,并且我们的 flex-container 默认具有 flex-direction: row;,因此您无需在 flex-items 上定义 flex-basis,这里是 why。
然后你删除浮动,因为它们不再需要:
.row--flex [class^="col-"],
.row--flex [class*="col-"] {
float: none;
}
最后,您在要移动的 col-* 类的元素中使用选择器。
我们将使用 col-order-* 类作为选择器。
将第二列向下移动,将其order 属性值更改为1,就完成了。
CSS order 属性指定用于布局弹性项目的顺序
在他们的弹性容器中。
flex-items 中的默认 order 值是 0,这就是为什么使用高于该值的任何值都可以。
CSS:
.col-order-1 {
order: 1;
}
HTML:
<div class="container">
<div class="row row--flex">
<div class="col-xs-12 col-sm-6">col-sm-6</div>
<div class="col-xs-12 col-sm-12 col-order-1">col-sm-12</div>
<div class="col-xs-12 col-sm-6">col-sm-6</div>
</div>
代码片段:
.row--flex {
display: flex;
flex-wrap: wrap;
}
.row--flex [class^="col-"],
.row--flex [class*="col-"] {
float: none;
}
.col-order-1 {
order: 1;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="row row--flex">
<div class="col-xs-12 col-sm-6">col-sm-6</div>
<div class="col-xs-12 col-sm-12 col-order-1">col-sm-12</div>
<div class="col-xs-12 col-sm-6">col-sm-6</div>
</div>
</div>
编辑:
如果您只想将其应用于超小屏幕,请在媒体查询中声明 col-order-* 类。
示例:
@media (max-width: 480px) {
.col-xs-order-1 {
order: 1;
}
}
代码片段:
.row--flex {
display: flex;
flex-wrap: wrap;
}
.row--flex [class^="col-"],
.row--flex [class*="col-"] {
float: none;
}
@media (max-width: 480px) {
.col-xs-order-1 {
order: 1;
}
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="row row--flex">
<div class="col-xs-12 col-sm-6">col-sm-6</div>
<div class="col-xs-12 col-sm-12 col-xs-order-1">col-sm-12</div>
<div class="col-xs-12 col-sm-6">col-sm-6</div>
</div>
</div>