2016-05-14 4 views
2

Моя цель - создать обертку содержимого, причем каждый элемент имеет равную высоту/ширину. Это одно достаточно просто и продемонстрировано ниже, но я хотел бы, чтобы элементы (DIV) переносились на другую строку, если они уменьшались ниже min-width, поэтому он не выглядит сжатым на мобильных дисплеях.Возможно ли использование контейнера только для CSS?

Я думаю, что jQuery может справиться с этим, но для простоты и размера я хотел бы увидеть, есть ли только решение css.

#wrapper { 
 
    display: table; 
 
    table-layout: fixed; 
 
    
 
    width:90%; 
 
    height:100px; 
 
    background-color:Gray; 
 
} 
 
#wrapper div { 
 
    display: table-cell; 
 
    height:100px; 
 
    min-width:200px; 
 
} 
 

 
#one { 
 
    background-color:green 
 
} 
 
#two { 
 
    background-color:blue 
 
} 
 
#three { 
 
    background-color:red 
 
}
<div id="wrapper"> 
 
    <div id="one">one one one one one one one one one one one one one one one one one one one one one</div> 
 
    <div id="two">two two two two two two</div> 
 
    <div id="three">three</div> 
 
</div>

Некоторые детали, как к реализации:

Это для типа целевой страницы значок сетки, количество элементов, присутствующих динамичны как размеры страницы. Вертикальная прокрутка из-за обертывания предметов в порядке, но я не хочу иметь горизонтальную прокрутку.

+1

ли медиа-запросы для более низких размеров экрана позволили? – sinisake

+0

@nevermind Это мой план резервного копирования, если я не могу заставить макет просто обернуть. – Wobbles

+1

не используют дисплей: свойства таблицы, ячейки на строке не обертываются, flex does;) –

ответ

4

Вы можете сделать это с Flexbox и flex-wrap: wrap, вот Fiddle

#wrapper { 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    width: 90%; 
 
    height: 100px; 
 
    background-color: Gray; 
 
} 
 
#wrapper div { 
 
    flex: 1; 
 
    height: 100px; 
 
    min-width: 200px; 
 
} 
 
#one { 
 
    background-color: green 
 
} 
 
#two { 
 
    background-color: blue 
 
} 
 
#three { 
 
    background-color: red 
 
}
<div id="wrapper"> 
 
    <div id="one">one one one one one one one one one one one one one one one one one one one one one</div> 
 
    <div id="two">two two two two two two</div> 
 
    <div id="three">three</div> 
 
</div>

+0

Фантастический, я решил, что flx был ответом, просто не мог заставить его работать прямо в моих тестах! – Wobbles

+0

Flexbox - это подходящий инструмент для этого, если вам не нужен IE9 и меньше. – enguerranws

+0

@enguerranws ​​Ill target IE9 <с JS или медиа-запросами, flex определенно является ответом для моих ориентированных на первую очередь браузеров. – Wobbles

4

От моего комментария

не использовать дисплей: свойства таблицы, ячейки на строка не обертывается, flex делает;)

#wrapper { 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
    width: 90%; 
 
    height: 100px; 
 
    background-color: Gray; 
 
} 
 
#wrapper div { 
 
    height: 100px; 
 
    min-width: 200px; 
 
    flex: 1; 
 
} 
 
#one { 
 
    background-color: green 
 
} 
 
#two { 
 
    background-color: blue 
 
} 
 
#three { 
 
    background-color: red 
 
}
<div id="wrapper"> 
 
    <div id="one">one one one one one one one one one one one one one one one one one one one one one</div> 
 
    <div id="two">two two two two two two</div> 
 
    <div id="three">three</div> 
 
</div>

+0

Также правильно, но Ненад избил вас до удара на несколько секунд ;-) – Wobbles

+0

@ Убирает, может быть, я не должен был сначала прокомментировать;), вы получили свой ответ, это важно, не так ли :) –

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