让我说我有
<div class="cont">
<div class="single">1</div>
<div class="single">2</div>
<div class="single">3</div>
<div class="single">4</div>
<div class="single">5</div>
<div class="single">6</div>
<div class="single">7</div>
</div>
我想要的是将这两个单独的div分成两排,就像砖块一样,从左到右,这个简单的方式:第一个div将在左上角,第二个将在第一个下方,第三个将在下一个到第1个,第4个将被放置在第3个以下,依此类推:
1 3 5 7 9
2 4 6 8
所有div都有相同的大小。
我已经尝试过使用masonry.js,它的工作就像一个魅力,但它通过复杂的解决方案来实现如此简单的任务(简单的解决方案很重要)。
答案 0 :(得分:3)
有一个完全符合
的CSS属性.cont {
-webkit-columns: 5em;
-moz-columns: 5em;
columns: 5em; /* desired width of column */
}
答案 1 :(得分:0)
我认为你不能用结构的css做到这一点。
此结构应该可以帮助您获得所需的布局:
<div class="a">
<div class="b">
<div class="c">1</div>
<div class="c">2</div>
</div>
<div class="b">
<div class="c">3</div>
<div class="c">4</div>
</div>
</div>
<style>
div.a div.b {float: left; width: 100px;}
</style>
答案 2 :(得分:0)
为了论证,假设您无法更改文档结构 - 您需要单独通过布局定义来完成此操作。
如果你知道你将拥有多少项,最简单的方法是使用内联块元素的CSS3列。你的.hesles是内联块,而.cont使用'columns'属性设置5列,每列宽足以容纳你的单身,同时使用max-height将内联块强制每两个项目放入新列。单体的最小尺寸足以阻止在同一条线上显示多个内联块。
您可以在此处将此效果视为jsfiddle:http://jsfiddle.net/mwjJG/25/:
.container {
height: 240px;
columns: 100px 5;
-webkit-columns: 100px 5;
-moz-columns: 100px 5;
}
.single {
display: inline-block;
height: 100px;
width: 100px;
}
请注意,这不适用于IE&lt; 10,除非您可以使用某种基于JS的shiv来添加对column属性的支持(CSS Pie可能会这样做)。
答案 3 :(得分:0)
我在这里使用这个代码完成了这个:虽然它有点hackish。
我将三个div(最后三个)设置为“double”类
.cont .single {
background: blue;
color: white;
width: 100px;
height: 100px;
margin: 10px;
float:left;
display: inline-block;
}
.cont .double {
background: blue;
color: white;
width: 100px;
height: 100px;
margin: 10px;
display:inline-block;
float:left;
}
div:nth-child(5) {
clear:left;
}
.cont {
height: 220px;
background: red;
}
答案 4 :(得分:0)
我遇到了同样的问题并使用网格解决了。
这是您应该添加到容器中的 CSS:
.cont {
height: 220px;
background: red;
display: grid;
grid-template-rows: repeat(2, 100px);
gap: 10px;
grid-auto-flow: column;
grid-auto-columns: 100px;
}