CSS column-count 列的高度不同

标签 css css-multicolumn-layout column-count

我正在尝试创建图像的砌体网格一般的想法是使用列数来实现 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/

相关文章:

html - 当它旁边的 div float 时,div 的填充不起作用?

html - Extjs 4.2 将按钮 float 到应用程序中的固定位置

html - 如何打破 CSS 中的报纸样式 3 列布局?

css - 在特定屏幕尺寸上设置类( Bootstrap )

css - float :right messing up my centered text

css - 如何将当前标签实例传递给angular2中的事件

html - 如何停止列拆分单个元素

html - 根据视口(viewport)宽度列出列布局

html - 一行 3 个 div,响应式(更改 div 大小而不是放到新行)

CSS 列重叠/溢出