flexbox左右对齐列

arc*_*ect 102 html css 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;
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
  <div id="a">
    a
  </div>
  <div id="b">
    b
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Jos*_*ier 229

您可以添加justify-content: space-between到父元素.在这样做时,子弹性工具箱将与相对侧对齐,并且它们之间具有空间.

更新的示例

#container {
    width: 500px;
    border: solid 1px #000;
    display: flex;
    justify-content: space-between;
}
Run Code Online (Sandbox Code Playgroud)

#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;
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
    <div id="a">
        a
    </div>
    <div id="b">
        b
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)


您还可以添加margin-left: auto到第二个元素以使其与右侧对齐.

更新的示例

#b {
    width: 20%;
    border: solid 1px #000;
    height: 200px;
    margin-left: auto;
}
Run Code Online (Sandbox Code Playgroud)

#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;
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
    <div id="a">
        a
    </div>
    <div id="b">
        b
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 嘿,你可以通过在这里使用`margin-left:auto`来解释元素是如何正确对齐的吗? (4认同)
  • @hulkinBrain,这是说明:http://stackoverflow.com/a/33856609/3597276 (2认同)
  • 注意:`margin-left:auto`和`margin-right:auto`技巧不兼容IE11,对于那些仍然需要支持它的人. (2认同)

小智 27

我想出了4种方法来实现结果.这是演示

方法1:

#a {
    margin-right: auto;
}
Run Code Online (Sandbox Code Playgroud)

方法2:

#a {
    flex-grow: 1;
}
Run Code Online (Sandbox Code Playgroud)

方法3:

#b {
    margin-left: auto;
}
Run Code Online (Sandbox Code Playgroud)

方法4:

#container {
    justify-content: space-between;
}
Run Code Online (Sandbox Code Playgroud)

  • 方法5:使用`flex:1;`插入一个额外的空元素,无论你想要多余的空间:) (8认同)

kon*_*yak 6

另一种选择是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>
Run Code Online (Sandbox Code Playgroud)

CSS:

.fill-remaining-space {
  flex: auto;
}
Run Code Online (Sandbox Code Playgroud)

这相当于 flex: 1 1 auto,它吸收沿主轴的任何额外空间。