html - 如何右对齐 flex 元素?

标签 html css flexbox

有没有比使用 position: absolute 更灵活的方式来右对齐“Contact”?

.main {
  display: flex;
}

.a,
.b,
.c {
  background: #efefef;
  border: 1px solid #999;
}

.b {
  flex: 1;
  text-align: center;
}

.c {
  position: absolute;
  right: 0;
}
<h2>With title</h2>
<div class="main">
  <div class="a"><a href="#">Home</a></div>
  <div class="b"><a href="#">Some title centered</a></div>
  <div class="c"><a href="#">Contact</a></div>
</div>

<h2>Without title</h2>
<div class="main">
  <div class="a"><a href="#">Home</a></div>
  <!--<div class="b"><a href="#">Some title centered</a></div>-->
  <div class="c"><a href="#">Contact</a></div>
</div>

http://jsfiddle.net/vqDK9/

最佳答案

更灵活的方法是使用 auto 左边距(flex 元素对待 auto margins 与在 block 格式化上下文中使用时略有不同)。

.c {
    margin-left: auto;
}

更新 fiddle :

.main { display: flex; }
.a, .b, .c { background: #efefef; border: 1px solid #999; }
.b { flex: 1; text-align: center; }
.c {margin-left: auto;}
<h2>With title</h2>
<div class="main">
    <div class="a"><a href="#">Home</a></div>
    <div class="b"><a href="#">Some title centered</a></div>
    <div class="c"><a href="#">Contact</a></div>
</div>
<h2>Without title</h2>
<div class="main">
    <div class="a"><a href="#">Home</a></div>
    <!--<div class="b"><a href="#">Some title centered</a></div>-->
    <div class="c"><a href="#">Contact</a></div>
</div>
<h1>Problem</h1>
<p>Is there a more flexbox-ish way to right align "Contact" than to use position absolute?</p>

关于html - 如何右对齐 flex 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22429003/

相关文章:

html - CSS牢不可破的链接

javascript - 使用 javascript 访问表数据

javascript - 为什么模态出现然后消失?

html - Flexbox - 旧设备上的 flex-wrap

php - 我应该在这里使用什么样的 JOIN?

jquery - 侧边栏不会出现在 Bootstrap 中

jquery - 如何在 bootstrap 4 中将长文本截断为 1 行

css - Polymer paper-input 字体大小媒体查询问题

css - flexbox 将换行符添加到剪贴板

html - 不包括子元素边距的 flex 元素周围的 CSS 轮廓?