【发布时间】:2017-11-11 12:26:31
【问题描述】:
我正在尝试将每个孩子一个接一个地(垂直)对齐。显然align-items: flex-start 并没有完全做到这一点,因为每个孩子之间有一些自动间距。
下面是我得到的结果的 sn-p。孩子们沿着他们父母的可用空间排列自己,这不是我想要实现的。我想要的是每个孩子在其前一个兄弟姐妹之后直接对齐(垂直,如在 sn-p 中)。
提前致谢!
编辑:flex-flow: column wrap 和 align-content: flex-start 都成功了。但是,我忘记将 align-self: flex-end 添加到最后一个孩子,当应用上述两种解决方案中的任何一种时,这都不起作用。
* {
box-sizing: border-box;
}
#container {
position: fixed;
top: 0; right: 0; bottom: 0; left: 0;
display: flex;
align-items: flex-start;
flex-flow: row wrap;
}
#container > div {
width: 100%;
margin: 10px;
border: 2px solid #ff0000;
}
#container > div:nth-child(1) { height: 5%; }
#container > div:nth-child(2) { height: 10%; }
#container > div:nth-child(3) { height: 20%; align-self: flex-end; }
<div id="container">
<div></div>
<div></div>
<div></div>
</div>
【问题讨论】:
-
您将 div 设置为 100% 宽度,因此它们当然不会一个接一个地排成一行。此外,您需要行,
align-items用于垂直对齐。justify-content是flex-start所需要的,但这已经是默认值,不需要定义。阅读css-tricks.com/snippets/css/a-guide-to-flexbox它有你需要的一切 -
@Huangism - 也许我不够清楚,我会在帖子中更具体。我确实想像示例中那样垂直对齐 div。只是没有每个 div 之间的自动间距。
justify-content不是我要找的。span> -
你肯定不清楚。
flex-flow: row wrap;你有行而不是列