【问题标题】:How to align this span to the right of the div?如何将此跨度对齐到 div 的右侧?
【发布时间】:2011-07-01 08:05:31
【问题描述】:

我有以下 HTML:

<div class="title">
    <span>Cumulative performance</span>
    <span>20/02/2011</span>
</div>

使用这个 CSS:

.title
{
    display: block;
    border-top: 4px solid #a7a59b;
    background-color: #f6e9d9;
    height: 22px;
    line-height: 22px;
    padding: 4px 6px;
    font-size: 14px;
    color: #000;
    margin-bottom: 13px;
    clear:both;
}

如果你检查这个 jsFiddle: http://jsfiddle.net/8JwhZ/

您可以看到名称和日期粘在一起。有没有办法让日期对齐到右边?我在第二个&lt;span&gt; 上尝试了float: right;,但它搞砸了风格,并将日期推到了封闭的div之外

【问题讨论】:

  • 你能修改 HTML 吗?
  • 如果你想让某些东西相对于另一个对象浮动,浮动对象需要在非浮动对象之前。日期应在标题之前并向右浮动。

标签: html css


【解决方案1】:

如果可以修改HTML:http://jsfiddle.net/8JwhZ/3/

<div class="title">
  <span class="name">Cumulative performance</span>
  <span class="date">20/02/2011</span>
</div>

.title .date { float:right }
.title .name { float:left }

【讨论】:

  • CSS 被简化并且适当的干净:两者都应该被添加。还小提琴包含非常脆弱的解决方案:jsfiddle.net/8JwhZ/2090
  • 或者如果你想要它内联(我做了)&lt;span style="float: right"&gt;
【解决方案2】:

使用浮点数有点混乱:

许多其他“微不足道”的布局技巧都可以使用 flexbox 完成。

   div.container {
     display: flex;
     justify-content: space-between;
   }

在 2017 年,如果您不必支持旧版浏览器,我认为这是首选解决方案(优于浮动):https://caniuse.com/#feat=flexbox

检查 fiddle 与 flexbox 相比不同的浮动用法(“可能包括一些竞争答案”):https://jsfiddle.net/b244s19k/25/。如果你仍然需要坚持浮动,我当然推荐第三个版本。

【讨论】:

  • 这是我选择使用的那个,请记住还要在包含您想要间隔的元素的跨度中设置 float: left;float: right;
  • 这个答案的核心信息是“浮动被认为是有害的”,你不应该使用这些(确定有一些罕见的例外)。那么你能解释一下为什么你认为这是个好主意吗?
  • 我认为 float 在内部元素中是必需的,因为我认为它是在小提琴示例中为它们定义的,但对于 #testD 它没有定义。我的错!
【解决方案3】:

浮动的另一种解决方案是使用绝对定位:

.title {
  position: relative;
}

.title span:last-child {
  position: absolute;
  right: 6px;   /* must be equal to parent's right padding */
}

另见the fiddle

【讨论】:

    【解决方案4】:

    不使用justify-content: space-between的flexbox的解决方案。

    <div class="title">
      <span>Cumulative performance</span>
      <span>20/02/2011</span>
    </div>
    
    .title {
      display: flex;
    }
    
    span:first-of-type {
      flex: 1;
    }
    

    当我们在第一个&lt;span&gt; 上使用flex:1 时,它会占用整个剩余空间并将第二个&lt;span&gt; 向右移动。这个解决方案的小提琴:https://jsfiddle.net/2k1vryn7/

    在这里https://jsfiddle.net/7wvx2uLp/3/,您可以看到两种 flexbox 方法之间的区别:带有justify-content: space-between 的flexbox 和带有flex:1 的flexbox,第一个&lt;span&gt;

    【讨论】:

      【解决方案5】:

      您可以在不修改 html 的情况下执行此操作。 http://jsfiddle.net/8JwhZ/1085/

      <div class="title">
      <span>Cumulative performance</span>
      <span>20/02/2011</span>
      </div>
      
      .title span:nth-of-type(1) { float:right }
      .title span:nth-of-type(2) { float:left }
      

      【讨论】:

        猜你喜欢
        • 2016-03-04
        • 2022-12-29
        • 2018-07-29
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-27
        相关资源
        最近更新 更多