我有一个生成div的网格,我需要垂直流0到9,然后将10包裹到下一列。当前配置是水平包装:
HTML
<div id="item-container"></div>
JavaScript的:
for (var i = 0; i <= 150; i++) {
$("<li class='items grid'>item " + i + "</li>").appendTo("#item-
container");
}
CSS
li.grid {
display: inline-block;
border: 1px solid #333;
background-color: #000;
color: #fff;
padding: 30px 30px 30px 30px;
background-image: linear-gradient(to bottom right, #eee, #ddd);
}
jsfiddle中的当前实现:http://jsfiddle.net/Ldh9beLn/9/
答案 0 :(得分:0)
对于内联块和内联块元素,HTML元素的正常流是水平的。您尝试实现的与列相关。您需要将item-container元素划分为列。
第一个选项是使用CSS3列计数或flex。
#item-container{
column-count: 4;
}
如果您也需要支持旧浏览器,则可以实现js后备。有一个jquery plugin可能会对你有帮助。
第二个选项是使用容器元素将元素划分为列。将列中的每10个元素换行并使用适当的css作为列包装器,如下所示;
for (var i = 0; i <= 150; i++) {
if(i%10 == 0) $("<div class='column'></div>").appendTo("#item-container");
$("<li class='items grid'>item " + i + "</li>").appendTo("#item-container > .column:last-child");
}
.column{
width: 35px;
border: 1px solid;
float: left;
margin: 30px;
}
答案 1 :(得分:0)
我找出了解决方案,但创建了两个类,以便在column1
和column7
之间切换,具体取决于所需的网格布局。
$('.item-container').removeClass('column7').addClass('column1');
和
$('.item-container').removeClass('column1').addClass('column7');
与相关的css类:
.column1{
column-count: 1;
}
.column7{
column-count: 7;
}