将html网格项对齐为垂直换行

Aligning html grid items to wrap vertically

本文关键字:垂直 换行 对齐 html 网格      更新时间:2023-09-26

我有一个生成的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/

对于inline和inline-block元素,HTML元素的正常流是水平的。您要实现的目标与列有关。您需要将item-container元素划分为列。

第一个选项是使用CSS3列计数或flex。

#item-container{
  column-count: 4;
}

如果你也需要支持旧的浏览器,你可以实现js回退。有一个jquery插件可以帮到你。

第二个选项是使用容器元素将元素划分为列。在一个列中每隔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;
}

我找到了解决方案,但根据所需的网格布局,创建两个类在column1column7之间切换。

$('.item-container').removeClass('column7').addClass('column1');

$('.item-container').removeClass('column1').addClass('column7');

和相关的CSS类:

.column1{
  column-count: 1;
}
.column7{
  column-count: 7;
}