【问题标题】:<ul> height when containing floating <li><ul> 包含浮动 <li> 时的高度
【发布时间】:2011-10-08 17:46:57
【问题描述】:

我有一个清单:

<ul>
 <li>Number 1</li>
 <li>Number 2</li>
 <li>Number 3</li>
 ...
</ul>

所有&lt;li&gt; 都是浮动的。我需要&lt;ul&gt; 框的高度。如果我没记错的话,这是无效的:

<ul>
 <li>Number 1</li>
 <li>Number 2</li>
 <li>Number 3</li>
 ...
 <hr class="clear" />
</ul>

.clear {
   clear: both;
}

我该怎么做?列表中的项目数可以不同,所以我不能使用固定高度。

【问题讨论】:

  • 当您浮动“所有”包含元素中的元素时,包含元素的高度会折叠并且不会“环绕”浮动元素。解决这个问题的方法很多。将溢出:自动添加到包含元素可以解决问题。在底部添加额外的元素也解决了这个问题。

标签: html css html-lists css-float


【解决方案1】:

在这里,我将介绍处理这种情况的最简单方法之一。

向左浮动总是有一些反应,如果我们有其他选择的话,它就不好用了。

替代方案是:

li { display:inline-block; }

无需添加额外的代码,例如 float:left 和 overflow:hidden :)

【讨论】:

    【解决方案2】:

    测试一下:

    ul { overflow: hidden; }
    li { float:right; display:block; }
    

    为你的元素添加类,不要对所有元素都这样做。

    【讨论】:

      【解决方案3】:

      包含浮动的好选择:

      【讨论】:

      • 感谢您和 thx 的链接以及无论如何我都会谷歌它:)
      • 感谢您的回答。我不明白为什么这样做的逻辑。有人会认为溢出:隐藏会做相反的事情
      • 为什么包含元素不环绕浮动元素?那么为什么 ul 不包裹浮动的 li 元素呢?
      • clearfix 就足够了.. 不知道为什么有人会在这种情况下添加溢出:隐藏到 ul 哈哈^^
      【解决方案4】:

      这不是您问题的直接答案,但作为替代方案,您是否可以考虑使用display:inline-block?这些天我只是在可能的情况下使用它而不是float,因为基本上大多数时候它可以实现相同的目标,而无需让容器正确包含内部浮动元素并且不得不一直clear它们.

      【讨论】:

      • inline-block 是一个有效的选项,但它有自己的(可解决的)缺点,例如受 HTML 中的空格影响,并且无法在 IE7 中正常工作。
      • 啊,明白了。我必须承认,我有幸能够忽略像 IE7 这样的旧浏览器,因为我所做的是一种专门的东西,最终用户使用的浏览器是已知和可控的。无论如何都值得一提。
      猜你喜欢
      • 2014-11-10
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      相关资源
      最近更新 更多