CSS3 Flex:向右拉孩子


91

这就是我的 小提琴

ul {
  display: flex;
  justify-content: flex-start;
  flex-direction: row;
  align-items: center;
  width: 100%;
  height: 100px;
  background: #333;
  padding: 15px;
}

ul li {
  padding: 15px;
  margin: 5px;
  background: #efefef;
  border: 1px solid #ccc;
  display: inline-block;
  list-style: none;
}

#item-1 {
  height: 50px;
}

#item-2 {
  height: 70px;
}
<ul>
  <li id="item-1">Home</li>
  <li id="item-2">Menu</li>
  <li>More</li>
  <li>Stuff</li>
  <li>Settings</li>
</ul>

我希望将弹性盒中的最后一个项目拉到右侧(在我的小提琴中为“设置”),同时将所有其他项目保持原样。“设置”项目也应垂直居中对齐。

align-self: flex-end 将项目推到底部(我想在右边)。

我非常喜欢使用flex-box的解决方案,因为我的物品具有可变的高度,并且应该始终垂直居中。

什么是最干净的方法来实现这一目标?

谢谢你的帮助!

Answers:


218

简单修复,请使用自动调整边距:

ul li:last-child {
    margin-left: auto;
}

您可能还不想使用width: 100%该元素,使它停留在可见区域内:

ul {
    display: flex;
    justify-content: flex-start;
    flex-direction: row;
    align-items: center;
    /* width: 100%; */
    height: 100px;
    background: #333;
    padding: 15px;
}

http://jsfiddle.net/dwLHE/

另请参阅https://www.w3.org/TR/css-flexbox-1/#auto-margins

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.