DigitalOcean 为您的旅程的每个阶段提供云产品。 立即开始使用 $200 的免费积分!
当您向多列元素添加高度时,您可以控制内容填充列的方式。 内容可以平衡填充或按顺序填充。
ul {
height: 300px;
-webkit-columns: 3;
-moz-columns: 3;
columns: 3;
-moz-column-fill: balance;
column-fill: balance;
}
此属性仅在 Firefox 中可用。 Firefox 会在高度受限的多列布局中自动平衡内容。 当给定高度约束时,其他浏览器将始终按顺序填充列。
要使 Firefox 的行为类似于其他浏览器,即按顺序填充列,您可以设置 column-fill: auto
。
值
column-fill
接受关键字值 balance
和 auto
。
balance
将用大约相同数量的内容填充每列,但不会允许列比 height
更高。 您可能会发现列会比 height
短,因为浏览器会均匀地水平分布内容。
auto
将填充每列,直到它达到 height
,并重复此操作,直到内容用完。 考虑到内容,此值不一定填充所有列,也不一定均匀填充它们。
这有点像把果汁倒进玻璃杯里。 您可以将相同数量的果汁倒入每个杯子中,并发现您没有将每个杯子都装满到顶部 (balance
)。 或者,您可以将玻璃杯装满到顶部,直到它装满,并重复此操作,直到没有果汁剩余。 结果,剩余的玻璃杯可能会有更少或没有果汁 (auto
)。
查看示例 column-fill 示例 [CSS-Tricks] 由 CSS-Tricks (@css-tricks) 在 CodePen 上创建。
相关属性
其他资源
浏览器支持
column-fill
关键字值特别是在 Firefox 中有效。 它们在 2014 年 8 月 (最初撰写此年鉴条目时) 无法使用,但在 2015 年 8 月 (Chrome 44) 再次测试时可以使用。 在该测试过程中,似乎动态更改值不起作用,您必须 强制重新布局。
对多列布局的浏览器支持
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
---|---|---|---|---|---|---|
任何 | 3+ | 1.5+ | 11.1+ | 10+ | 2.3+ | 6.1+ |
不要忘记您的前缀!
根据 CSS3 规范,
column-fill: balance
是初始值。因此,Firefox 是唯一正确处理它的浏览器(截至 2015 年 9 月)。致:Paul Radzkov 和所有相信开源和分享的人。正是因为像这样的网站和像你这样的贡献者,Paul,我才能像我这样的新手网页设计师学习到如此多的东西,并不断提升自己。像你这样的人分享的知识量真是惊人。我们,那些想要像你一样的网页设计师,只是不断地接受和接受(吸取知识),但我想说的是,你为此得到了很多感谢。我没有钱;我只有我的感谢,谢谢你,css-tricks,以及所有像这样的网站的所有贡献者。最令人印象深刻的是,像你这样的极客和聪明人挑战了关于你没有情感的社会刻板印象。但事实恰恰相反,因为你,Paul 以及这里其他人的情感行为,就是能够如此自由和无条件地分享你的知识。我已经使用像这样的网站足够久了,我认为现在是时候说谢谢以及感谢所有像你一样的人了。
再次感谢你所做的一切。
——真诚的 Gene Dangerfield
我有高度不一致的列,分成 3 列,当第一列高度很大时,其他项目应该流入剩余的列,但这并没有发生,这里有什么问题? https://jsfiddle.net/dvinod_eluru/Lbm5pe22/。内联块显示不能流入下一列。
修复了 Chrome 列对齐问题,而不是一级子元素的显示:内联块,而是针对二级子元素。这意味着 div(父级) > div(一级子元素) > div(二级子元素)