Подтвердить что ты не робот

Bootstrap: Как изменить порядок div в строке жидкости?

Как переупорядочить/поменять порядок некоторых контейнеров/строк жидкости в бутстрапе.....

Если мы возьмем пример примера загрузочной жидкости на следующей странице:

http://twitter.github.com/bootstrap/examples/fluid.html

У них есть боковая панель слева в жидком ряду, а затем единица героя в том же ряду. И затем некоторое содержимое в следующей строке. Когда мы переключаемся на экран мобильного просмотра/меньшего размера, он появляется в той же последовательности. Но как мы можем изменить этот порядок. например, как показать боковую панель в конце и блок героя поверх страницы?

4b9b3361

Ответ 1

Новая версия Bootstrap v3 теперь поддерживает упорядочение столбцов:

Порядок столбцов

Легко изменить порядок наших встроенных столбцов сетки с помощью классов модификаторов .col-push-* and .col-pull-*.

 <div class="row">
  <div class="col-md-9 col-md-push-3">9</div>
  <div class="col-md-3 col-md-pull-9">3</div>
</div>

Выдает следующий порядок:

 ----------------------------
|     3     |      9       |
----------------------------

Документация: http://getbootstrap.com/css/#grid-column-ordering

Ответ 2

Вы должны иметь в виду, что сетка не поддерживает это по умолчанию, но есть способы справиться с этим.

Вы могли бы, например, инвертировать оба пролета (установить порядок мобильного вида) и принудительно установить нормальное позиционирование с помощью

<div class="row-fluid">
    <div class="span9 pull-right">
        <!-- ... -->
    </div><!--/span-->
    <div class="span3 pull-left">
        <!-- ... -->
    </div><!--/span-->
</div><!--/row-->

Затем элементы .span более или менее корректно изменяются для меньших экранов, но у вас все еще есть несколько правил для исправления этого поведения:

.row-fluid .pull-left[class*="span"]:last-child { margin-left: 0; }

@media (max-width: 767px) {
    .row-fluid .pull-right[class*="span"] { float: none; }
}

Если вы используете более двух столбцов, вам нужно будет отменить край элементов .pull-right (кроме последнего) - что-то вроде:

.row-fluid .pull-right[class*="span"] { margin-right: 2.5641%;margin-left: 0; }
.row-fluid .pull-right[class*="span"]:first-child { margin-right: 0; }

Live demo (jsfiddle) и полноэкранный режим (некоторые стили должны быть установлены между нормальным и отзывчивым, поэтому jsfiddle "взломать" в панели стилей)

Ответ 3

Если вы хотите, чтобы ваш бок-бар под вашим героем, но над другими вещами, это заняло некоторые манипуляции с dom, поскольку это не просто вопрос размещения списка до/после всего, а скорее между элементами. Что-то вроде этого должно работать:

$(window).resize(function () {
    if ($(window).width() < 480) {
        $("#sidebar").insertAfter($("#hero"));
    } else {
        $("#sidebar").prepend($("#containingrow"));
    }
});

Ответ 4

#wrapper {
    display: flex;
    display:-webkit-flex;
    flex-direction: column;
    -webkit-flex-direction:column;
}

#wrapper > div {
    width: 100%;
}

#header {
    order: 1;
    -webkit-order: 1;
}

#mainMenu {
    order: 2;
    -webkit-order:2;
}

#content {
    order: 3;
   -webkit-order:3;
}

#sidebar {
    order: 4;
    -webkit-order:4;
}

Источник: http://www.reddit.com/r/css/comments/1v1gv7/change_order_of_divs_with_css/

Ответ 5

Я работаю над плагином для сортировки и добавления элементов в сетки Bootstrap. Он очень грубый и хрупкий на данный момент, но если он используется только для основных функций, я считаю, что он выживет в производственной среде.

Плагин требует, чтобы сетки были согласованными, вся определенная ширина диапазона, но это могло бы помочь с этим.

Лучше всего выполнять весь этот вид работы до того, как разметка будет отображаться, но я использую Bootstrap в некоторых случаях, когда я не могу сортировать заранее из-за ограничений некоторых языков шаблонов, которые я вынужден использовать.

Github
Codepen

Ответ 6

Вы можете сделать это с помощью медиа-запросов, новой возможности, предлагаемой CSS3.

С помощью медиа-запросов вы можете создавать стили, которые применяются, например, только к определенным типам экранов. Если вы хотите сделать то, о чем говорите, вы могли бы что-то вроде:

@media only screen and (max-device-width: 480px) {
      .sidebar { width: 100%; bottom: 0%; blahblah: something;  }
}

И этот стиль будет применяться только в том случае, если ширина экрана меньше 480 пикселей. Это решение фактически не зависит от начальной загрузки, а от CSS3.

Кстати, если вы включили bootstrap.responsive.css(который также задан с помощью платформы bootstrap), ваш макет автоматически будет сделан одним макетом столбца, но, возможно, не в том порядке, в котором вы хотели.