flexbox左右对齐列

时间:2015-03-08 01:30:35

标签: html css css3 flexbox

学习如何使用flexbox,使用典型的css,我可以将两列中的一列向左浮动,另一列向右浮动,中间有一些排水沟空间。我如何使用flexbox做到这一点?

http://jsfiddle.net/1sp9jd32/



#container {
  width: 500px;
  border: solid 1px #000;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}
#a {
  width: 20%;
  border: solid 1px #000;
}
#b {
  width: 20%;
  border: solid 1px #000;
  height: 200px;
}

<div id="container">
  <div id="a">
    a
  </div>
  <div id="b">
    b
  </div>
</div>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:191)

您可以将justify-content: space-between添加到父元素。这样,子弹性工具箱将与相对的两侧对齐,并在它们之间留出空间。

Updated Example

#container {
    width: 500px;
    border: solid 1px #000;
    display: flex;
    justify-content: space-between;
}

#container {
    width: 500px;
    border: solid 1px #000;
    display: flex;
    justify-content: space-between;
}

#a {
    width: 20%;
    border: solid 1px #000;
}

#b {
    width: 20%;
    border: solid 1px #000;
    height: 200px;
}
<div id="container">
    <div id="a">
        a
    </div>
    <div id="b">
        b
    </div>
</div>


您还可以将margin-left: auto添加到第二个元素,以便将其与右侧对齐。

Updated Example

#b {
    width: 20%;
    border: solid 1px #000;
    height: 200px;
    margin-left: auto;
}

#container {
    width: 500px;
    border: solid 1px #000;
    display: flex;
}

#a {
    width: 20%;
    border: solid 1px #000;
    margin-right: auto;
}

#b {
    width: 20%;
    border: solid 1px #000;
    height: 200px;
    margin-left: auto;
}
<div id="container">
    <div id="a">
        a
    </div>
    <div id="b">
        b
    </div>
</div>

答案 1 :(得分:26)

我想出了4种方法来实现结果。这是demo

方法1:

#a {
    margin-right: auto;
}

方法2:

#a {
    flex-grow: 1;
}

方法3:

#b {
    margin-left: auto;
}

方法4:

#container {
    justify-content: space-between;
}

答案 2 :(得分:0)

有不同的方法,但最简单的方法是使用空格 - 看看最后的例子

#container {    
    border: solid 1px #000;
    display: flex;    
    flex-direction: row;
    justify-content: space-between;
    padding: 10px;
    height: 50px;
}

.item {
    width: 20%;
    border: solid 1px #000;
    text-align: center;
}

see the example

答案 3 :(得分:0)

另一种选择是在要填充剩余空间的标签之间添加flex: auto样式的另一个标签。

https://jsfiddle.net/tsey5qu4/

HTML:

<div class="parent">
  <div class="left">Left</div>
  <div class="fill-remaining-space"></div>
  <div class="right">Right</div>
</div>

CSS:

.fill-remaining-space {
  flex: auto;
}

这等效于flex:1 1 auto,它吸收主轴上多余的空间。

答案 4 :(得分:0)

除了 Jost 的回答之外,如果您还需要垂直对齐,请在需要时使用 align-items: center;

#container {
    width: 500px;
    border: solid 1px #000;
    display: flex;
    justify-content: space-between;
    align-items: center;
}