我正在尝试创建图像的砌体网格一般的想法是使用列数来实现 this example .
我有一堆图片的三列,CSS 和 HTML 与链接中的相同。问题是列不会正确对齐。最右边的列通常比其他列短得多。显然,除非图像大小相同,否则列永远不会完美对齐,但差异远不止于此。有时前两列每列包含十张图像,但第三列仅包含两张(图像大小相似),这意味着您可以轻松地将一些图像从第一列和第二列移动到第三列以获得更好的对齐.这个结果似乎违背了列数的想法。
如果您将某些图像更改为小得多的图像,上述链接也会发生这种情况。仅仅是列数仍然存在错误且不应使用,还是有一些技巧可以阻止这种情况发生?
编辑:这是基本的 CSS(减去了很多基本的样式,比如过渡和其他东西,我试图删除它们以查看它们是否是罪魁祸首)。
#wrapper {
width: 90%;
max-width: 1100px;
min-width: 800px;
margin: 50px auto;
}
#columns {
-webkit-column-count: 4;
-webkit-column-gap: 10px;
-webkit-column-fill: auto;
-moz-column-count: 4;
-moz-column-gap: 10px;
-moz-column-fill: auto;
column-count: 4;
column-gap: 15px;
column-fill: auto;
}
.pin {
display: inline-block;
background: #FEFEFE;
border: 2px solid #FAFAFA;
box-shadow: 0 1px 2px rgba(34, 25, 25, 0.4);
margin: 0 2px 15px;
-webkit-column-break-inside: avoid;
-moz-column-break-inside: avoid;
column-break-inside: avoid;
padding: 15px;
padding-bottom: 5px;
}
和here is a JSFiddle显示问题。有四列,但在 Chrome 中,第三列比需要的要短,可以从第四列移动图像以使它们更均匀。请注意,此示例“还不错”,但问题可能比这大得多。有时差异等于几个图像的大小。
最佳答案
你应该尝试使用
column-fill: balance;
-moz-column-fill: balance;
-webkit-column-fill: balance;
来源:https://www.w3.org/TR/css-multicol-1/#cf
你的 JSFiddle 没有太大变化,因为列是用 column-count
CSS 属性按顺序填充的,因此元素的顺序保持不变。因此,如果您确实首先有大图像,然后是一个由小图像组成的列,那么您可能会有不同大小的列。
column-fill: balance;
属性不能变魔术,因为它不能改变顺序。
如果您想调整元素的顺序以使列的长度(或多或少)相等,请使用 JavaScript。
关于CSS column-count 列的高度不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19791616/