Bootstrap 4 中的列排序,带有推/拉和 col-md-12

Posted

技术标签:

【中文标题】Bootstrap 4 中的列排序,带有推/拉和 col-md-12【英文标题】:Column ordering in Bootstrap 4 with push/pull and col-md-12 【发布时间】:2016-11-09 21:56:00 【问题描述】:

我有两列,每列都有 col-md-12 类。

在桌面视图中,它们应显示为:

Col **1** 
Col **2**

在移动视图中应该显示如下:

Col **2**
Col **1**

这甚至可以通过 Bootstrap 的列排序实现吗?

我当前的代码:

<div class="row">
    <div class="col-xs-push-12 col-md-12">
        Col 1
    </div>
    <div class="col-xs-pull-12 col-md-12">
        Col 2
    </div>
</div>

【问题讨论】:

您错过了基本列代码...col-xs-12 仍然无法正常工作.. cols 离左/右太远了:( 那是因为它是 100% 的宽度。查看其他问题:***.com/q/25714852/3739498 【参考方案1】:

解决此问题的一种方法是制作 Col 2 的两个版本,并将一个放在 Col 1 上方,一个放在 Col 1 下方。然后使用responsive utilities 相应地隐藏和显示。

【讨论】:

嗯,好像有点“脏” 它有点脏,但是当我们讨论全宽列时,它是更好的选择之一。如果您使用较小的网格,我们可以依靠 col-*-push-*col-*-pull-* 来实现您想要的结果。 如果你想对它着迷,你可以使用 jQuery 和 clone it 并将其插入到 $(window).resize() 处理程序的 Col 1 之前。【参考方案2】:

你可以使用flexbox,然后你可以使用媒体查询来改变顺序:

.row 
  /* Setup Flexbox */
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  /* Reverse Column Order */
  -webkit-flex-flow: column-reverse;
  flex-flow: column-reverse;

CODEPEN

或(手机和平板电脑上的默认顺序,台式机上的反向顺序):

@media (min-width: 992px) 
  .row 
    /* Setup Flexbox */
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    /* Reverse Column Order */
    -webkit-flex-flow: column-reverse;
    flex-flow: column-reverse;
  

CODEPEN

【讨论】:

谢谢,但我想要移动设备和桌面设备的不同顺序 我知道,你可以使用媒体查询,我给你举个例子。 可能是一个选项,如果没有 der 列排序的解决方案【参考方案3】:

更新(2018 年 2 月)-v4+

现在 bootstrap 已经发布,您可以使用 order 实用程序类来实现这一点,因为您可以在 beta 版本中做到这一点(请参阅下面的旧更新),不同之处在于他们添加了这 3 个新类:

.order-first 
  -webkit-box-ordinal-group: 0;
  -ms-flex-order: -1;
  order: -1;


.order-last 
  -webkit-box-ordinal-group: 14;
  -ms-flex-order: 13;
  order: 13;


.order-0 
  -webkit-box-ordinal-group: 1;
  -ms-flex-order: 0;
  order: 0;


片段

.p-2 
  background: red;
  border: white 5px solid
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<div class="d-flex flex-column">
  <div class="p-2">1</div>
  <div class="p-2 order-first order-lg-2">2</div>
</div>

旧更新(2017 年 10 月) - v4.0.0 测试版

随着测试版的发布,您可以使用引导程序中的 flexbox 实用程序来执行此操作,例如 flex-order

(请参阅@ZimSystem 的答案 - 查看 alpha 版本的解决方案)

.p-2 
  background: red;
  border: white 5px solid
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet" />
<div class="d-flex flex-column">
  <div class="p-2">1</div>
  <div class="p-2 order-1 order-lg-2">2</div>
</div>

【讨论】:

谢谢,但这不适用于全宽列,对吧? 但它并排不是全宽 这是否解决了您的问题? @dippas 好 10/2017 更新 - 甚至没有意识到存在那些 order-x 实用程序,非常有帮助【参考方案4】:

2021 年更新 - Bootstrap 5 测试版

order-* 分类的工作方式相同...

<div class="row">
        <div class="col-md-12">
            Col 1
        </div>
        <div class="col-md-12 order-first order-md-0">
            Col 2
        </div>
    </div>

Demo Bootstrap 5

2019 年更新 - Bootstrap 4.3+

现在可以使用 flexbox 排序来反转全宽、12 单元 col-*-12 列。

在较早的 Bootstrap 4 alpha 和 beta 版本中,排序工具是 flex-*...

<div class="row">
    <div class="col-md-12">
        Col 1
    </div>
    <div class="col-md-12 flex-first flex-md-unordered">
        Col 2
    </div>
</div>

Demo Bootstrap 4 Alpha

Bootstrap 4.0.0 开始,排序工具为 order-*...

<div class="row">
    <div class="col-md-12">
        Col 1
    </div>
    <div class="col-md-12 order-first order-md-2">
        Col 2
    </div>
</div>

Demo Bootstrap 4.1.0

请参阅https://getbootstrap.com/docs/4.0/layout/grid/#order-classes 上的文档

【讨论】:

这绝对是现在的首选答案,因为它不依赖任何外部 CSS 规则等 这需要成为现在的首选答案。 @kevlarr 和 Routhinator 嘿伙计们,我刚刚用 beta 版本更新了我上面的答案。 @zimSystem 测试版已经让你使用order- 实用程序类,检查我的回答十月更新和/或测试版的CSS,他们已经更新了这个实用程序;) 老兄。对于我们这些不经常使用 Bootstrap 的人来说有什么好处。为什么他们做出如此命名的改变。这是痛苦的发现。欣赏这篇文章。

以上是关于Bootstrap 4 中的列排序,带有推/拉和 col-md-12的主要内容,如果未能解决你的问题,请参考以下文章

DataTables.js 对包含带有整数文本的 HTML 链接的列进行排序

使用推/拉更改 Bootstrap 中 col-*-12 列的顺序

Bootstrap栅格系统概述

Git拉和推不起作用

将 spark current_timestamp 值推送到带有 timezone 列的 postgres 时间戳

(Bootstrap 4+) - 具有多个元素的列:在同一行上对齐元素