Порядок столбцов в Bootstrap 4 с push/pull и col-md-12

У меня есть два столбца с классом 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>

person Cray    schedule 07.07.2016    source источник
comment
Вы пропустили код базового столбца... col-xs-12   -  person Aibrean    schedule 07.07.2016
comment
все еще не работает .. столбцы слишком далеко влево / вправо :(   -  person Cray    schedule 07.07.2016
comment
Это потому, что это 100% ширина. См. другой вопрос: stackoverflow.com/q/25714852/3739498   -  person Aibrean    schedule 07.07.2016


Ответы (4)


ОБНОВЛЕНИЕ (ФЕВРАЛЬ 2018 г.) - v4+

Теперь, когда начальная загрузка выпущена, вы можете добиться этого, используя order служебные классы, как вы могли сделать это в бета-версии (см. старое обновление ниже), с той разницей, что они добавили эти 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 г.) — v4.0.0 beta

С выпуском бета-версии вы можете сделать это с помощью утилит flexbox из бутстрапа, таких как гибкий порядок

(см. ответ от @ZimSystem - чтобы увидеть решение с альфа-версией)

.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>

person dippas    schedule 07.07.2016
comment
спасибо, но это не работает для столбцов полной ширины, верно? - person Cray; 07.07.2016
comment
но это бок о бок не во всю ширину - person Cray; 07.07.2016
comment
это решило вашу проблему? - person dippas; 07.07.2016
comment
@dippas Хорошее обновление от 10/2017 - даже не знал, что эти order-x утилиты существуют, очень полезно - person kevlarr; 13.10.2017

Обновление 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>

Демо Bootstrap 5

Обновление 2019 — Bootstrap 4.3+

Теперь полную ширину, 12 столбцов col-*-12 можно поменять местами, используя порядок flexbox.

В более старых альфа- и бета-версиях Bootstrap 4 утилиты упорядочения были 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>

Демонстрация 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>

Демонстрация Bootstrap 4.1.0

См. документацию по адресу https://getbootstrap.com/docs/4.0/layout/grid/#order-classes

person Zim    schedule 28.03.2017
comment
Это определенно должен быть предпочтительным ответом сейчас, поскольку он не зависит от каких-либо внешних правил CSS и т. д. - person kevlarr; 26.05.2017
comment
Теперь это должен быть предпочтительный ответ. - person Routhinator; 09.10.2017
comment
@kevlarr и Routhinator Привет, ребята, я только что обновил свой ответ выше версией бета-версии. - person dippas; 13.10.2017
comment
@zimSystem бета-версия уже позволяет вам использовать order- служебные классы, проверьте мой ответ с октябрьским обновлением и / или CSS из бета-версии, они обновили эту утилиту;) - person dippas; 19.02.2018
comment
Чувак. В чем проблема для нас, людей, которые не используют Bootstrap постоянно. Почему они делают такое изменение названия. Это было больно найти. Цените пост. - person Leroy105; 16.06.2018

Один из способов обойти это — сделать две версии столбца 2 и поместить один над столбцом 1, а другой — под ним. Затем используйте адаптивные утилиты, чтобы соответствующим образом скрыть и показать.

person Taylor Foster    schedule 07.07.2016
comment
хм, кажется немного грязным - person Cray; 07.07.2016
comment
Это немного грязно, но когда мы обсуждаем столбцы полной ширины, это один из лучших вариантов. Если бы вы использовали сетки меньшего размера, мы могли бы положиться на col-*-push-* и col-*-pull-* для достижения желаемых результатов. - person Robert; 07.07.2016
comment
Если вы хотите по-настоящему сойти с ума, вы можете использовать jQuery и клонировать его и вставить перед Столбец 1 в обработчике $(window).resize(). - person Taylor Foster; 07.07.2016

Вы можете использовать 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;
}

КОДЕПЕН

или (порядок по умолчанию на мобильных устройствах и планшетах, обратный на рабочем столе):

@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;
  }
}

КОДЕПЕН

person max    schedule 07.07.2016
comment
спасибо, но я хочу другой порядок для мобильных и настольных компьютеров - person Cray; 07.07.2016
comment
Я знаю, вы можете использовать медиа-запросы, я приведу пример. - person max; 07.07.2016
comment
может быть вариантом, если нет решения с порядком столбцов der - person Cray; 07.07.2016