CSS 列数列的高度不同

Eri*_*onn 5 css column-count css-multicolumn-layout

我正在尝试创建图像的砌体网格,总体思路是使用列计数来实现此示例

我有三列,其中有一堆图像,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;
}
Run Code Online (Sandbox Code Playgroud)

是一个显示问题的 JSFiddle。有四列,但在 Chrome 中,第三列比所需的短,可以从第四列移动图像以使它们更均匀。请注意,这个例子“还不错”,但问题可能比这个大得多。有时差异等于几张图像的大小。

Rom*_*aun 3

你应该尝试使用

column-fill: balance;
-moz-column-fill: balance;
-webkit-column-fill: balance;
Run Code Online (Sandbox Code Playgroud)

来源: https: //www.w3.org/TR/css-multicol-1/#cf

它不会对您的 JSFiddle 发生太大变化,因为列是按顺序填充的column-countCSS 属性按顺序填充的,因此元素的顺序保持不变。因此,如果您确实先有大图像,然后是由小图像组成的列,则可能会有不同大小的列。

column-fill: balance;属性无法施展魔法,因为它无法更改顺序。

如果您想调整元素的顺序以使列的长度(或多或少)相等,请使用 JavaScript。