CSS: 对齐两个元素,在同一行左右对齐,不带浮点数

CSS: align two element, to the left and right in the same line WHITHOUT floats

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

在我的例子中,我有一个 h1,有一个跨度和一个 link。我希望 span 向左对齐,link 向右对齐。

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>

这是期望的结果:

您可以使用 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>

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

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

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>

你可以使用一些 flexbox 魔法:

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