Ответ 1
Попробуйте использовать jQuery масонство. Это может быть большим решением для этого.
Или попробуйте изотоп, который имеет гораздо лучшую производительность
У меня есть серия динамически созданных divs разной высоты в контейнере div.
<div id="container">
<div id='d1'>Varying text...</div>
<div id='d2'>Varying text...</div>
<div id='d3'>Varying text...</div>
<div id='d4'>Varying text...</div>
<div id='d5'>Varying text...</div>
<div id='d6'>Varying text...</div>
<div id='d7'>Varying text...</div>
</div>
Когда я "float: left", divs wrap, как и ожидалось, оставляет пустое пространство между более короткими div и следующей строкой div.
Как я могу заставить divs эффективно "float: up", обертывание верити, а не горизонтально. Использование только css.
В идеале пункт 2 относится к пункту 1, но любое улучшение поможет.
Итак, это будет выглядеть так:
Попробуйте использовать jQuery масонство. Это может быть большим решением для этого.
Или попробуйте изотоп, который имеет гораздо лучшую производительность
Если вы хотите, чтобы divs располагались вертикально во всех агентах браузера, вам нужно обернуть каждый раздел в содержащийся элемент. Вот пример того, что я имею в виду.
css
// let reset our elements
.site-container,
.element-container,
.my-element {
margin: 0;
padding: 0;
}
.site-container {
display: block;
width: 960px;
margin: 0 auto; /* centers your site container on the page */
clear: both; /* basic float clearing */
}
.element-container {
display: inline-block;
float: left;
width: 300px; /* we'll have 3 sections width 10px spacing */
margin-right: 10px;
}
.element-container.last {
margin-right: 0;
}
.my-element {
width: 280px; /* 300 - 20px [total padding] = 280px */
margin-bottom: 10px; /* add a bottom margin */
padding: 10px; /* makes our element 320px wide */
}
// make background-color classes
.bg-red {
background-color: #ff0000;
}
.bg-blue {
background-color: #3b8acd;
}
разметка
<html>
<head>
<title>Vertical boxes!</title>
</head>
<body>
<div class="site-container">
<div class="element-container">
<div class="my-element bg-red">
1
</div>
<div class="my-element bg-blue">
2
</div>
</div><!-- /element-container -->
<div class="element-container">
<div class="my-element bg-blue">
3
</div>
<div class="my-element bg-red">
4
</div>
</div><!-- /element-container -->
<div class="element-container last">
<div class="my-element bg-red">
5
</div>
<div class="my-element bg-blue">
6
</div>
</div><!-- /element-container -->
</div><!-- /site-container -->
</body>
</html>
Что касается седьмого div у вас есть, я бы предложил, чтобы он охватывал весь сайт-контейнер. Это эстетично:)
Вы должны попробовать разместить каждый столбец div в свой собственный контейнер и поместить их влево. Например:
<div id='container'>
<div id='col1'>
<div id='d1'>asdf</div>
<div id='d2'>asdf</div>
</div>
<div id='col2'>
<div id='d3'>asdf</div>
<div id='d4'>asdf</div>
</div>
</div>
и т.д. и т.д.
каждый столбец плавает слева друг против друга, и каждый элемент столбцов течет вертикально достаточно хорошо... вот пример: http://jsfiddle.net/V6z8F/
Недавно я сделал это для своего проекта.
Добавьте CSS для родительского класса:
-webkit-column-count: 4;
-moz-column-count: 4;
column-count: 4;
<div class="parent">
<div class="child"></div>
</div>
Две альтернативы масонству, которые работают очень хорошо:
Salvattore (ориентированный на CSS): http://salvattore.com/