【问题标题】:CSS: align two element, to the left and right in the same line WHITHOUT floatsCSS:对齐两个元素,在同一行中左右对齐,没有浮动
【发布时间】:2015-06-16 19:52:37
【问题描述】:

我正在尝试对齐两个内联元素,一个在左侧,一个在右侧。我想在不使用浮点数的情况下完成此操作。

就我而言,我有一个 h1,带有一个跨度和一个链接。我希望跨度向左对齐,链接向右对齐。

http://jsfiddle.net/Lkfacta3/

h1>span {
  text-align: left;
}
h1>a {
  text-align: right;
}
 <h1><span>Align me left</span> <a href="">align me right</a></h1>

这是想要的结果:

【问题讨论】:

  • 一点历史:这个问题的诞生是因为浮动的行为是狂野的。即使使用清除和封装的 DIV,浮动的结果在浏览器之间也有很大差异,并将 EZ css 任务变成一场噩梦,试图控制浏览器之间的奇怪和意外行为。即使使用 CSS v3.0,这些不受欢迎的行为仍然盛行。迫使我避免像瘟疫一样的浮动并支持替代方案。多亏了这个搜索,我找到了更好、更简洁的方法来对没有浮动的页面进行 CSS 处理。消除对清除和不必要的额外 HTML 元素的需要。更好!

标签: html css text-align


【解决方案1】:

您可以使用 CSS display:table + display:table-cell

h1 {
  display: table;
  width: 100%;
  margin: 0;
}
h1>span {
  text-align: left;
  display: table-cell;
}
h1>a {
  text-align: right;
  display: table-cell;
}
<h1><span>Align me left</span><a href="#">align me right</a></h1>

或者,使用display:inline-block

h1 {
  font-size: 0; /* remove whitespace */
}
h1>span,
h1>a {
  font-size: 32px;
  display: inline-block;
  width: 50%;
}
h1>span {
  text-align: left;
}
h1>a {
  text-align: right;
}
<h1><span>Align me left</span><a href="#">align me right</a></h1>

请注意,以上任何一种方式都会使<a> 可点击区域变大,如果需要更正,请将其包裹到另一个<span>

【讨论】:

  • display: inline-block; 解决方案对我有用。谢谢。
【解决方案2】:

您可以尝试 CSS 表格,如果您希望活动区域仅在文本上延伸,请在处理链接时采取一些预防措施。

根据您希望它在灵活设计中的工作方式,浮动可能是一个可行的选择。

h1 {
  display: table;
  width: 100%;
}
h1 span, h1 a {
  display: table-cell;
}
h1 span {
  text-align: left;
}
h1 a {
  text-align: right;
  border: 1px dotted blue;
  width: 1%;
  white-space: nowrap;
}
<h1><span>Align me left</span> <a href="">align me right</a></h1>

【讨论】:

    【解决方案3】:

    你可以使用一些 flexbox 魔法:

    h1 {
      display: flex;
      justify-content: space-between;
    }
    <h1>
      <span>Align me left</span>
      <a href="">align me right</a>
    </h1>

    【讨论】:

    • 这可行,但我在 h1 上方得到了一个奇怪的边距,即使在取消边距之后也是如此
    • @chovy 这与 flexbox 无关。可能是h1body 的边距。
    • 如果我删除display: flex,它就会消失。我认为这是我的固定宽度导致了这个问题。
    • 这是非常好的和有效的答案。谢谢!对于我的情况,我使用了“div”而不是“h1”,它工作正常。我在这里找到了有关 css flex 的更多信息 - developer.mozilla.org/en-US/docs/Web/CSS/…
    • 不错的解决方案!像魅力一样工作
    猜你喜欢
    • 2019-12-11
    • 2019-07-14
    • 2012-01-15
    • 2019-01-21
    • 2018-08-24
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多