删除多行弹性项目之间的空间(空白)时,它们包装
我正在尝试在一个设定高度的容器中放置一些物品。 如果没有剩余的空间,物品将会彼此相邻。
这是这个想法:
我正在尝试使用flexbox来实现这一点,一个具有设置高度的容器,方向被设置为column
并且flex-wrap
被wrap
:
问题是各栏之间有很大的差距。
我尝试设置justify-content
和align-items
到flex-start
,但这可能是默认值。
有什么办法可以解决这个问题吗?
这里是代码:
* { box-sizing: border-box; } body { font-family: sans-serif; } .container { display: flex; flex-wrap: wrap; height: 300px; flex-direction: column; background-color: #ccc; } .items { width: 100px; height: 100px; margin: 10px; background-color: tomato; color: white; font-size: 60px; font-weight: bold; text-align: center; padding: 15px; }
<div class="container"> <div class="items">1</div> <div class="items">2</div> <div class="items">3</div> <div class="items">4</div> <div class="items">5</div> </div>
codepen
flex容器的初始设置是align-content: stretch
。
这意味着多条弹性物品将沿横轴均匀分布。
要覆盖此行为,请将align-content: flex-start
应用于容器。
当您在单线柔性容器 (即flex-wrap: nowrap
)中工作时,用于沿着交叉轴分布空间的属性是align-items
和align-self
。
当您在多行柔性容器 (即flex-wrap: wrap
)中工作时(如问题中所述),用于沿横轴分布柔性线(行/列)的属性为align-content
。
从规格:
8.3。 交叉轴alignment:
align-items
和align-self
属性
align-items
为所有flex容器的项目(包括匿名flex项目)设置默认alignment方式。align-self
允许为各个弹性项目覆盖此默认alignment方式。8.4。 打包Flex线:
align-content
属性
align-content
属性在横轴上有额外的空间时,在flex容器中alignmentflex容器的行,类似于justify-content
在主轴内alignment单个项目的方式。 请注意,此属性对单行flex容器没有影响。
align-content
属性有六个值:
-
flex-start
-
flex-end
-
center
-
space-between
-
space-around
-
stretch
这是stretch
的定义:
stretch
线伸展占据剩余的空间。 如果剩余空闲空间是负数,则该值与
flex-start
相同。 否则,自由空间会在所有行之间平均分配,从而增加它们的交叉大小。
换句话说,横轴上的align-content: stretch
类似于主轴上的flex: 1
。