Столбцы начальной загрузки в мобильной версии

#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:

Вы можете использовать приведенный ниже класс, как показано на рисунке…

  1. col-xs-2 — будет два столбца только на устройствах xs — (мобильные)
  2. col-md-3 — будет 3 столбца на всех устройствах, кроме мобильных

<div class="row">
<div class="col-xs-2 col-md-3">Content</div>
....
</div>
Однако вы не можете изменить строки без использования js. Более того, на мобильных устройствах это действительно имеет значение … ?

Комментарии:

1. Это неправильно. col-xs-2 означает, что он занимает 2 из 12 пробелов на экранах xs. Код, который @Fernanda использует в настоящее время (col-xs-6), верен для 2 столбцов на мобильных устройствах.

2. col-xs-2 — будет два столбца только на устройствах xs -(мобильных)… означает ли это что-то еще … я сказал то же самое!!