Динамические блоки в контейнере

M
На сайте с 19.08.2015
Offline
34
1118

Добрый день, вопрос к знатокам css.

Есть контейнер div к примеру 1200px шириной, в этом контейнере выводятся эллементы-блоки, предположим новостей,

так вот, как сделать средствами css чтобы если в контейнере 1 элемент, то она занимала по ширине 100%, если 2 то каждая по 50% пространства по ширине и т.д.

На худой конец и скриптик подойдет, если не большой... Я суть понять не могу, ведь позицианированием и флоатами не решить проблему.

Мне главное понять чуть, и рабочий код, самый простой, чтобы на основе него уже своё наработалось.

mugukamil
На сайте с 05.11.2013
Offline
26
#1

http://codepen.io/mugukamil/pen/LZxboV

у контейнера выставляешь display: flex;

для проверки удаляй item3 и item2 в HTML

дани мапов
На сайте с 06.09.2012
Offline
204
#2

Такой плагин подойдет http://masonry.desandro.com/ ?

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
M
На сайте с 19.08.2015
Offline
34
#3

Буду пробовать, всем спасибо!))))

---------- Добавлено 25.06.2016 в 05:54 ----------

mugukamil:
http://codepen.io/mugukamil/pen/LZxboV

у контейнера выставляешь display: flex;
для проверки удаляй item3 и item2 в HTML

Это почти решает задачу, в любом случае это новое для меня, за что спасибо.

Не решается одна задача, вот я хочу чтобы например в строку было 4 блока, если появляется 5й, то чтобы он переносился на следующую строку, как это сделать?

Сейчас они все ютятся в один ряд.

    <div class="container">

<div class="item item1">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi fugit, officia, dolorum eius eaque facilis excepturi, ea qui omnis deleniti asperiores accusantium cupiditate nesciunt nobis, velit cum sit dolore. Cum minus porro, amet fugiat enim ratione quibusdam libero ab, ducimus iusto autem fuga quod magnam harum. Eum id explicabo animi.
</div>
<div class="item item2">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab tenetur laborum quos, mollitia magni temporibus et fuga minima voluptatibus quidem, doloribus culpa soluta quia quas ipsa, similique dignissimos vitae. Harum quaerat explicabo eum animi voluptas dicta suscipit adipisci veritatis ad accusamus ab reiciendis temporibus voluptates itaque minus, quia, quam praesentium.
</div>
<div class="item item3">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab tenetur laborum quos, mollitia magni temporibus et fuga minima voluptatibus quidem, doloribus culpa soluta quia quas ipsa, similique dignissimos vitae. Harum quaerat explicabo eum animi voluptas dicta suscipit adipisci veritatis ad accusamus ab reiciendis temporibus voluptates itaque minus, quia, quam praesentium.
</div>



<div class="item item4">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab tenetur laborum quos, mollitia magni temporibus et fuga minima voluptatibus quidem, doloribus culpa soluta quia quas ipsa, similique dignissimos vitae. Harum quaerat explicabo eum animi voluptas dicta suscipit adipisci veritatis ad accusamus ab reiciendis temporibus voluptates itaque minus, quia, quam praesentium.
</div>

</div>

.container {
max-width: 1000px;
margin: 0 auto;
background:#E0F4C7;
display: flex;
}

.item {
display: inline-block;
color: white;
}

.item1 {
background: #000;
}

.item2 {
background: blue;
}
.item3 {
background: orange;
}
I2
На сайте с 07.03.2015
Offline
38
#4

Тогда вам нужно подключать плагин, ссылка на который выше.

В нем все можно настроить.

Качественная верстка PSD макетов (/ru/forum/974524)
TA
На сайте с 12.06.2009
Offline
116
TiA
#5
Mazletop:
Добрый день, вопрос к знатокам css.

Есть контейнер div к примеру 1200px шириной, в этом контейнере выводятся эллементы-блоки, предположим новостей,
так вот, как сделать средствами css чтобы если в контейнере 1 элемент, то она занимала по ширине 100%, если 2 то каждая по 50% пространства по ширине и т.д.

На худой конец и скриптик подойдет, если не большой... Я суть понять не могу, ведь позицианированием и флоатами не решить проблему.

Мне главное понять чуть, и рабочий код, самый простой, чтобы на основе него уже своё наработалось.

Для контейнера вам нужно указать display: table и table-layout: fixed, для дочерних элементов display: table-cell. Из ограничений - все дочерние элементы будут выстраиваться в один ряд.

Mazletop:
Не решается одна задача, вот я хочу чтобы например в строку было 4 блока, если появляется 5й, то чтобы он переносился на следующую строку, как это сделать?

Это можно сделать только с помощью скрипта, который будет считать количество блоков и указывать им ширину через класс или атрибут style.

Профессиональная верстка и разработка сайтов на WordPress (http://www.maultalk.com/topic139110s0.html)
M
На сайте с 19.08.2015
Offline
34
#6
TiA:

Это можно сделать только с помощью скрипта, который будет считать количество блоков и указывать им ширину через класс или атрибут style.

Есть какой простой скрипт?

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

TA
На сайте с 12.06.2009
Offline
116
TiA
#7

Mazletop, обычно такие решения пишутся под конкретный проект.

Е Блажеев
На сайте с 19.06.2016
Offline
5
#8
Mazletop:
Есть какой простой скрипт?

К упомянутому выше Masonry, последняя версия которого вышла более 2 лет назад, стоит добавить аналог с текущей поддержкой и лучшей гибкостью - Isotope.js.

Если поддержка старых браузеров не нужна, вы можете реализовать подобный функционал посредством CSS Flexbox, более 75% браузеров уже поддерживают данный функционал.

Вы можете использовать и комбинированный вариант Isotope.js для старых браузеров, которые не поддерживаю CSS Flexbox и CSS Flexbox для браузеров, которые поддерживают его, соответственно. Проверить поддержку CSS Flexbox можно с помощью CSS.supports().API.

Если у вас остались вопросы или предложения, можете обращаться в личные сообщения либо Skype (указанный в профиле).

Парсеры, плагины, верстка (WordPress, OpenCart, PHP, JS, Google PageSpeed) (/ru/forum/944779)
M
На сайте с 19.08.2015
Offline
34
#9
Е Блажеев:
К упомянутому выше Masonry, последняя версия которого вышла более 2 лет назад, стоит добавить аналог с текущей поддержкой и лучшей гибкостью - Isotope.js.

Если поддержка старых браузеров не нужна, вы можете реализовать подобный функционал посредством CSS Flexbox, более 75% браузеров уже поддерживают данный функционал.

Вы можете использовать и комбинированный вариант Isotope.js для старых браузеров, которые не поддерживаю CSS Flexbox и CSS Flexbox для браузеров, которые поддерживают его, соответственно. Проверить поддержку CSS Flexbox можно с помощью CSS.supports().API.

Если у вас остались вопросы или предложения, можете обращаться в личные сообщения либо Skype (указанный в профиле).

Спасибо) Буду реализоваться в любом случае, будут вопросы буду писать.

Я сейчас в отпуске, как вернусь займусь вопросом.

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