用flexbox增加物品的高度
有没有办法创建一个没有空格的布局,其中大多数物品的尺寸是相同的,但有些是高度的2倍?我可以做类似的东西我想用下面的CSS:用flexbox增加物品的高度
家长:
display: flex;
flex-direction: column;
justify-content: flex-start;
align-content: flex-start;
flex-wrap: wrap;
孩子:
width: 22%
height: 100px;
高大的人有height: 200px
。它看起来像这样:
这是非常密切的,但问题是,我需要一个左到右的顺序,而不是顶部至底部,所以我不能使用flex-direction: column
。如果我做同样的flex-direction: row
,这是行不通的:
任何想法?
根据您的总体情况,您可能可以使用order
属性。
CSS
order
属性指定用于在Flex容器中布置Flex项目的顺序。
这里是一个基本的flexbox,在column
对齐中有20个flex项目。
编号是垂直的,就像在您的第一张图片中一样。
随着order
你可以重新安排布局不改变HTML或flex-direction
。
项目按列堆叠,但order
属性覆盖了它们的自然位置并将它们重新排列成行,就像在第二张图像中一样。
然后,如果你加倍的几个项目的大小,你只需要找出正确的排序数学(因为每一个项目,现在将占用两个空格)。
注意项目之间没有额外的垂直间距。
所有Flex项目默认设置为order: 0
。负值是允许的(即order: -3
)。
谢谢!看起来数学会非常复杂,在调整大小的时候,我仍然需要重新计算顺序,所以在砌体方面没有真正的优势。 –
我刚刚遇到了这个反应,它看起来会帮助我完成我所需要的。谢谢! –
如果大多数项目是相同的维度,只有少数是高度的2倍,请保留您的'列'布局并使用'order'属性重新排列它们。如果在您的情况下这是可行的,请告诉我,我会准备一个更详细的答案。 –
Michael_B,请这么做,这听起来像是我最好的解决方案。 –
'order'对于指定数量的div(30+)会非常粗糙......加上它不会响应....您可能需要JS来跟踪...并且如果您正在使用JS,你不妨使用Masonry.js。 :) –