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

Написание кода flexbox для 2-х и 3-х колонок на настольном и мобильном устройствах (перенос)

Мне очень тяжело разобраться в этом CSS-решении flexbox. В основном есть две проблемы: одна с двумя колонками, другая с тремя колонками.

2-Колонка:
Это, я думаю, может быть довольно простым:

2-Column on desktop

2-Column on mobile

3-Колонка:
Это, вероятно, немного сложнее:

3-Column on desktop

3-Column on mobile

Контейнерный класс, ну, в общем, .container, а дочерние - просто .left, .right и .middle. Не уверен, что это актуально, но ширина .container составляет 100% от области просмотра. Вероятно, я должен добавить, что использование Bootstrap невозможно из-за не зависящих от меня причин.

4b9b3361

Ответ 1

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

HTML

<div class="container">
    <div class="left"></div>
    <div class="middle"></div>
    <div class="right"></div>
</div>

CSS

.container {
    display:flex;
    flex-wrap:wrap;
    flex-direction:row;
    justify-content:flex-start;
    align-items:stretch;
}

.left {order:1; background:red; flex-basis:100%; height:300px}
.middle {order:3; background: green;flex-basis:100%; height:300px;}
.right {order:2; background:yellow;flex-basis:100%; height:300px;}

@media screen and (min-width:600px) {
   .container {
       flex-wrap:nowrap;
   } 

    .left {
        flex-basis:200px;
        order:1;
    }
    .middle {
        flex-basis:1;
        order:2;
    }
    .right {
        flex-basis:200px;
        order:3;
    }
}

И скрипка http://jsfiddle.net/2touox81/

Как вы можете видеть, вы можете установить порядок столбцов для элементов flex.

Надеюсь, что это поможет.

Ответ 2

Я предполагаю, что экран для рабочего стола шире, чем 600 пикселей, мобильный меньше.

Схема с двумя столбцами очень проста:

body {
  display: flex;   /* Magic begins */
  flex-wrap: wrap; /* Allow multiple lines */
}
#left, #right {
  flex: 1 300px;   /* Initial width of 600px/2
                      Grow to fill remaining space */
  min-width: 0;    /* No minimal width */
}

body {
  display: flex;
  flex-wrap: wrap;
  text-align: center;
  font-weight: bold;
}
#left, #right {
  flex: 1 300px;
  min-width: 0;
  background: #f55;
  padding: 15px 0;
}
#right {
  background: #57f;
}
<div id="left">Left</div>
<div id="right">Right</div>

Ответ 3

вы ищете отзывчивый дизайн, я полагаю, поэтому вы можете использовать медиа-запросы в своем CSS как

.container
    {
    background-color:red;
    }

@media (max-width: 600px) 
{
    .container
    {
    background-color:blue;
    }

}
@media (max-width: 480px) 
{
    .container
    {
    background-color:green;
    }

}
/* ...etc*/

чтобы проверить ваш отзывчивый дизайн:

в Firefox нажмите F12, а затем нажмите на иконку "режим гибкого дизайна"

в Chrome нажмите F12, затем нажмите значок "Переключить мобильный телефон"

здесь вы можете найти более отзывчивые примеры:

http://navnav.co/

надеюсь, что поможет