Robin 之前已经介绍过这个话题,但是我在过去几周里听到了一些关于它的困惑,并且看到了 其他人尝试解释它,我想加入这场讨论。
假设您有一个 Flex 容器,其中包含一些未填充整个区域的 Flex 项目。
查看 Chris Coyier 的 CodePen
ZEYLVEX (@chriscoyier)
在 CodePen 上。
现在我想将“菜单”项目推到最右边。这就是自动外边距发挥作用的地方。如果我在它上面设置 margin-left: auto;
,它将尽可能地向该行右侧推。
查看 Chris Coyier 的 CodePen
WNbRLbG (@chriscoyier)
在 CodePen 上。
实际上,您可以考虑改为使用 margin-inline-start: auto;
并开始在所有地方使用 逻辑属性,以便在您需要更改方向时做好准备。
查看 Chris Coyier 的 CodePen
gObgZpb (@chriscoyier)
在 CodePen 上。
此外,请注意,只要有空间可以推,自动外边距就可以在两个方向上工作。在这个例子中,使菜单向下移动的不是对齐方式,而是自动外边距。
查看 Chris Coyier 的 CodePen
XWJpobE (@chriscoyier)
在 CodePen 上。
一个有趣的特殊情况是,当多个 Flex 子元素具有“auto”外边距时——剩余空间将平均分配给它们。
尝试一个包含四个子元素的示例,其中第三个子元素具有
margin-left: auto
,而第四个子元素具有margin-left: auto
和margin-right: auto
。或者一个包含四个子元素的示例,其中第三个子元素同时具有
margin-left: auto
和margin-right: auto
——结果是第三个子元素在剩余空间中居中,而第四个子元素根据flex-direction
推到内联框的末尾。我刚接触 Flexbox,但这对我来说很有意义。
查看您提供的示例,它似乎与
justify-content: space-between;
的工作方式相同。可以将其用作替代方案吗?就是这样!我将其用在了一个 4 列博客布局上,以便所有 4 列都显示相同的高度。
您是否有任何指导说明何时使用此方法以及何时使用对齐属性?(例如,
align-self: flex-end
)在我的基本演示中,它确实做了同样的事情!