【问题标题】:Make sure a float:right element is vertically aligned to the top, even if next to a float:left element确保 float:right 元素与顶部垂直对齐,即使在 float:left 元素旁边也是如此
【发布时间】:2012-10-17 23:59:00
【问题描述】:

我在演示 in this fiddle 时遇到了一个浮动的小问题。

我有一个向左浮动的 DIV,其宽度是动态的(未知)。我还有一个在同一个块中向右浮动,宽度也是动态的。

问题在于,如果第一个块的宽度延伸到与右侧浮动块发生碰撞,右侧浮动块将(正确)向下下降以确保没有发生碰撞。但是,我希望它保持在顶部(垂直,即 - 不是 z-index)。

基本上,似乎文本优先考虑“取代”右侧的块。这应该是相反的方式,但是左侧的文本甚至在开始换行之前就用完了最上面一行的可用空间。

我想解决方案相当简单。只是我根本没有想到它,而且我所做的任何搜索都没有找到我想要的东西。

【问题讨论】:

  • 差不多了,但是在换行到下一行之前,文本应该尽可能多地使用可用空间。
  • 好的,然后:jsfiddle.net/calder12/5FFdf/3 设置文本的宽度以在点击标签之前尽可能多地占用空间。唯一的问题是标签的宽度是否也会动态增长。
  • 那当然有这个在标题里面浮动标签jsfiddle.net/calder12/5FFdf/4
  • 没错。那就是问题所在。使用固定宽度我已经弄清楚了:)问题是:两个宽度都是未知的。

标签: css html css-float positioning


【解决方案1】:

您可能想尝试使用 css 表格/只需创建两个元素并将其设为表格,然后将您的左右元素设为表格单元格:

#wrapper {
  display: table;
  width: 100%;
}
#leftside, #rightside {
  display: table-cell;
  width: 50%; /* Both sides will be rendered on one line */
  vertical-align: top;
}
/* Position elements within the cell */
#leftside { text-align: left; }
#rightside { text-align: right; }
#leftside > div, #rightside > div {
  display: inline-block;
  text-align: left; /* Reset text alignment */
}

说明:表格结构将元素保持在一行,宽度为 50%;内部元素(在这种情况下为 div)将是内联块,以便它们可以左对齐或右对齐。现在,当一个内部 div 超过 50% 的最大宽度时,它只会使另一个“单元格”侧更小

【讨论】:

  • 我没有测试它,我确信它是一种有用的方法。在我的具体情况下,我想避免重新设计整个事情。
【解决方案2】:

将标签 div 浮动到标题 div 内,这会将标题文本包裹在标签周围,而不管两者的宽度如何。

<div class="infoBox">
<div class="inner">
    <div class="entry">
        <div class="title">
        <div class="type">
            LABEL
        </div>
            If this text is longer, the LABEL will drop downwards.
            I would like to have the LABEL float right (as it does here) but also be at the top of the block. 
        </div>
    </div>
</div>

【讨论】:

  • 这绝对是一个非常好的解决方案。也非常简单明了。只剩下一个问题:如果左侧的文本较短,则标签将不再显示在外部块的最右侧。见jsfiddle.net/5FFdf/5(对不起,我应该在我最初的问题中包含这个要求)
  • 设置标题框的最小宽度。只要盒子本身总是一个可以正常工作的静态尺寸。 245px 似乎适用于您展示的示例。 jsfiddle.net/calder12/5FFdf/6
猜你喜欢
  • 2015-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
  • 2014-05-19
  • 2018-11-10
  • 2014-04-02
相关资源
最近更新 更多