2016-02-05 2 views
0

у меня есть этот HTMLFlexbox макет не работает как задумано

<div class="flex-container"> 
    <div class="flex-full">1</div> 
</div> 

<div class="flex-container"> 
    <div class="flex">2</div> 
    <div class="flex">3</div> 
    <div class="flex">4</div> 
</div> 

стилизованных этого CSS

*{ 
    margin:0; 
    padding:0; 
} 
    .flex-container{ 
     width: 90%; 
     max-width: 960px; 
     display: flex; 
     background-color: lightgray; 
     margin-left: auto; 
     margin-right: auto; 
     flex-wrap: wrap; 
    } 
    .flex-full{ 
     background-color: red; 
     flex: 1 0 100%; 
    } 
    .flex{ 
     background-color: blue; 
     flex: 1 0 90px; 
    } 

    @media screen and (max-width: 480px) { 
    .flex-container { 
     background-color: lightgreen; 
     width: 100%; 
    } 
} 
    @media screen and (max-width: 480px) { 
    .flex-container { 
     background-color: lightgreen; 
     width: 100%; 
    } 
} 

Но результат не по назначению. я постараюсь дать визуальное представление о проблеме (загрузка изображений не будет работать):

На ширине экрана 320px и ниже, я получаю следующий результат

111111111111111 
    222222233333333 
    444444444444444 

Что я ожидал было:

phone screen   bigger screen 
    111111111111111  111111111111111111 
    222222222222222  222222333333444444 
    333333333333333 
    444444444444444 

Я надеюсь, что он сделал Sence, пожалуйста, помогите мне :)

JSFiddle

+0

Для второго гибкого контейнера div вы можете играть с колонкой flexDirection для телефона (max-width: 480px) и rowDirection для большего экрана? – maheshiv

ответ

0

Возможно, вы ищете flex-direction: column;?

на .flex-контейнер.

+0

Нет, я хочу, чтобы первая строка (11111) всегда заполняла пробел, и я хочу, чтобы вторая строка (222,333,444) была либо рядом друг с другом, либо сверху друг с другом, никогда не разбивалась на ряд из 2 и ряд из 1. –

0

В Flex вы можете использовать justify-content и align-content для горизонтального и вертикального выравнивания соответственно.

Также flex-basis принимает те же значения, что и свойства ширины и высоты, и задает начальный основной размер элемента гибкости, прежде чем свободное пространство распределяется в соответствии с факторами гибкости.

.flex-container { 
    flex-direction:   row; 
    justify-content:  space-between; 
    align-content:   space-between; 
} 

.flex1, .flex4{ 
    flex-basis:    100%; 
} 

.flex2, .flex3{ 
    flex-basis:    50%; 
} 

@media screen and (max-width: 320px){ 

    .flex2, .flex3{ 
    flex-basis:    100%; 
    } 

} 

Вы также можете использовать width: 100% и width: 50% вместо этого, если flex-basis.

+0

Я отредактировал, чтобы уточнить свою цель, я хочу, чтобы .flex имел тот же CSS –

+0

Итак, в чем проблема с ответом? – Trix

+0

Прежде всего, я чувствую, что изменение свойств гибкости в медиа-запросе противоречит интуиции в использовании flexbox. Во-вторых, flex 2, 3 и 4 должны быть в одном ряду, если не друг на друга. –

Смежные вопросы