如何在Flex容器内右侧对齐项目?

时间:2014-07-27 18:28:25

标签: html css css3 flexbox

我开始使用弹性盒但不确定如何在flex容器内设置一个位于右侧的元素?我尝试应用align-self: flex-endjustify-content: flex-end但没有成功,所以我希望有人可以帮助我吗?

CSS

.ctn {
  background: lightblue;
  height: 100px;
  padding: 10px;
  display: flex;
  align-items: center;
}

.btn {
  outline: none;
  border: none;
  color: navy;
  background: lightyellow;
  height: 50px;
  line-height: 50px;
  width: 200px;
  text-transform: uppercase;
}

Codepen: http://codepen.io/styler/pen/pvJFA

2 个答案:

答案 0 :(得分:6)

align-self属性类似于align-items属性:它仅在十字轴上更改其对齐方式(当您使用行方向时,它垂直方向)。不是你想要的。

您可以使用justify-content属性。如果您有超过2个项目,它们将均匀分开,第一个项目一直向左,最后一个项目一直向右:

.ctn {
  background: lightblue;
  height: 100px;
  padding: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

或者您可以在想要一直向右移动的项目上使用margin-left。如果您有两个以上的项目,它会将所有前面的项目一直移到左侧:

.btn {
  outline: none;
  border: none;
  color: navy;
  background: lightyellow;
  height: 50px;
  line-height: 50px;
  width: 200px;
  text-transform: uppercase;
  margin-left: auto;
}

答案 1 :(得分:0)

将此作为您的Flexbox备忘单: Complete Guide

您也可以使用这个方便的工具:FLEXY

更新:至于OP在评论中指出,这并没有完全解决问题,所以这里是jsfiddle: link。请告诉我,如果发布解决浏览器不一致的代码(仅供参考,有3个单独的Flex版本:versions)会干扰您现有的解决方案。

现在提出您的问题,这是一个示例代码:

.ctn {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-direction: normal;
    -moz-box-direction: normal;
    -webkit-box-orient: horizontal;
    -moz-box-orient: horizontal;
    -webkit-flex-direction: row;
    -ms-flex-direction: row;
    flex-direction: row;
    -webkit-flex-wrap: nowrap;
    -ms-flex-wrap: nowrap;
    flex-wrap: nowrap;
    -webkit-box-pack: end;
    -moz-box-pack: end;
    -webkit-justify-content: flex-end;
    -ms-flex-pack: end;
    justify-content: flex-end;
    -webkit-align-content: stretch;
    -ms-flex-line-pack: stretch;
    align-content: stretch;
    -webkit-box-align: start;
    -moz-box-align: start;
    -webkit-align-items: flex-start;
    -ms-flex-align: start;
    align-items: flex-start;
}

.btn{
    -webkit-box-ordinal-group: 1;
    -moz-box-ordinal-group: 1;
    -webkit-order: 0;
    -ms-flex-order: 0;
    order: 0;
    -webkit-box-flex: 1;
    -moz-box-flex: 1;
    -webkit-flex: 0 1 auto;
    -ms-flex: 0 1 auto;
    flex: 0 1 auto;
    -webkit-align-self: auto;
    -ms-flex-item-align: auto;
    align-self: auto;
}

/*
    Legacy Firefox implementation treats all flex containers
    as inline-block elements.
*/

@-moz-document url-prefix() {
  .ctn {
      width: 100%;
      -moz-box-sizing: border-box;
   }

}