#css #html #twitter-bootstrap
#css #HTML #twitter-bootstrap
Вопрос:
Я использую bootstrap для создания веб-сайта, но что-то не так.
Я хочу сделать 2 строки и 3 столбца, и когда экран изменится на мобильный, я хочу, чтобы это было 3 строки и 2 столбца.
Для рабочего стола
|A| |B| |C|
|D| |E| |F|
Мобильный
|A| |B|
|C| |D|
|E| |F|
Я использовал приведенный ниже код, чтобы сделать это, но изображения не остаются такими, как я хочу.
<div class="row">
<div class="col-xs-6 col-sm-4 col-md-4">Content</div>
<div class="col-xs-6 col-sm-4 col-md-4">Content</div>
<div class="col-xs-6 col-sm-4 col-md-4">Content</div>
<div class="col-xs-6 col-sm-4 col-md-4">Content</div>
<div class="col-xs-6 col-sm-4 col-md-4">Content</div>
<div class="col-xs-6 col-sm-4 col-md-4">Content</div>
</div>
Изображения остаются такими
|A| |B|
|C|
|D| |E|
|F|
Заранее спасибо!
Ответ №1:
4 столбца на рабочем столе и 2 столбца на мобильном устройстве:
<div class="row">
<div class="col-sm-3 col-6 m-auto"></div>
<div class="col-sm-3 col-6 m-auto"></div>
<div class="col-sm-3 col-6 m-auto"></div>
<div class="col-sm-3 col-6 m-auto"></div>
</div>
Возможно, потребуется добавить класс fluid к объекту image, чтобы сохранить адаптивность изображения в div.
Комментарии:
1. Это должно быть ответом. Простой и элегантный.
Ответ №2:
Я уже сталкивался с этой проблемой раньше. Проблема заключалась в том, что мой контент имеет разную высоту. Поскольку Bootstrap использует числа с плавающей запятой для упорядочивания столбцов, ваш столбец C не может перемещаться полностью влево, если ваш столбец A выше столбца B.
Я включил ссылку на codepen, чтобы вы могли увидеть его в действии. Две верхние строки в точности соответствуют приведенному выше коду, в то время как две нижние строки показывают div с высотой, отличной от высоты других divs.
http://codepen.io/egerrard/pen/PGRQYK
Решением для вас будет установка высоты ваших divs на максимальную высоту для всего вашего контента. Что-то вроде
.maxHeightDiv {
height: 200px;
}
Вероятно, вам придется устанавливать высоты для разной ширины окна. Это может немного раздражать, но это предостережение от системы bootstrap float.
Ответ №3:
Я использую Stacked для горизонтального и смешивания и сопоставления в Boostrap.
1. Сложены по горизонтали
<div class="row">
<div class="col-sm-8">col-sm-8</div>
<div class="col-sm-4">col-sm-4</div>
</div>
<div class="row">
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
</div>
Вид рабочего стола: мобильный вид:
2. Смешивать и сочетать
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
<div class="col-12 col-md-8">.col-12 .col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
<div class="col-6">.col-6</div>
<div class="col-6">.col-6</div>
</div>
Мобильная версия:
Подробнее: https://getbootstrap.com/docs/4.0/layout/grid/#mix-and-match
Подробнее: https://getbootstrap.com/docs/4.0/layout/grid/#stacked-to-horizontal
Ответ №4:
Несмотря на то, что это старое, возможно, это поможет некоторым из вас.
Мой способ — это больше кода, чем, вероятно, необходимо, но я не смог придумать решение для системы bootstrap grid, которое обеспечивает различные изменения столбцов и строк в сочетании с изменениями ширины экрана.
Итак, давайте начнем:
- Переключение
.scss
и реализация адаптивных функций начальной загрузки - Включите родительский div, который действует как контейнер переключения вида для вашей системы начальной загрузки
- Использование
display: none !important
иdisplay: inline !important
для divs - Подсказка, установите ширину класса image на
max-widht: 100%;
, это заставит изображения занимать как можно больше места, не превышая его родительскую ширину; если вы, конечно, не хотите разных уникальных размеров
.scss
: (проверьте свою версию bootstrap css)
$stageZero: 540px;
$stageOneLower: 719px;
$stageOneHigher: 720px;
$stageTwoLower: 959px;
$stageTwoHigher: 960px;
$stageThree: 1140px;
@mixin stage00 {
@media (max-width: $stageZero) { @content; }
}
@mixin stage01 {
@media (min-width:$stageOneLower) and (max-width:$stageOneHigher) { @content; }
}
@mixin stage02 {
@media (min-width:$stageTwoLower) and (max-width:$stageTwoHigher) { @content; }
}
@mixin stage03 {
@media (min-width: $stageThree) { @content; }
}
.mobileViewToggle {
@include stage00 {display: inline !important;}
@include stage01 {display: none !important;}
@include stage02 {display: none !important;}
@include stage03 {display: none !important;}
}
.desktopViewToggle {
@include stage00 {display: none !important;}
@include stage01 {display: inline !important;}
@include stage02 {display: inline !important;}
@include stage03 {display: inline !important;}
}
.html
:
<div class="mobileViewToggle">
< Bootstrap Grid Code with xs prefix, e.g. col-xs-4>
</div>
<div class="desktopViewToggle">
< Bootstrap Grid Code with sm prefix, e.g. col-sm-6>
</div>
Комментарии:
1. Казалось хорошим решением, но по какой-то причине при определенной ширине оба моих divs появлялись одновременно.
Ответ №5:
Вы можете использовать приведенный ниже класс, как показано на рисунке…
col-xs-2
— будет два столбца только на устройствах xs — (мобильные)col-md-3
— будет 3 столбца на всех устройствах, кроме мобильных
<div class="row">
Однако вы не можете изменить строки без использования js. Более того, на мобильных устройствах это действительно имеет значение … ?
<div class="col-xs-2 col-md-3">Content</div>
....
</div>
Комментарии:
1. Это неправильно. col-xs-2 означает, что он занимает 2 из 12 пробелов на экранах xs. Код, который @Fernanda использует в настоящее время (col-xs-6), верен для 2 столбцов на мобильных устройствах.
2. col-xs-2 — будет два столбца только на устройствах xs -(мобильных)… означает ли это что-то еще … я сказал то же самое!!