4

我浮动我的无序列表元素的那一刻......背景颜色失败了。为什么?

<style type="text/css">

    .bkgrd-blue { background-color: #094AB2; }

    .application-bar { color: #FFFFFF; }

    .application-bar ul { }
    .application-bar ul.control-bar { list-style: none outside none; margin: 0; overflow: visible; padding: 0; }

    .application-bar ul.control-bar.branding { float: left;}
</style>

<div class="application-bar bkgrd-blue">
    <ul class="control-bar">
        <li>
            This is working!
        </li>
    </ul>
</div>

<div class="application-bar bkgrd-blue">
    <ul class="control-bar branding">
        <li>
            The moment I float this...it fails! Why?
        </li>
    </ul>
</div>
4

3 回答 3

4

浮动元素会将其从正常的文档流中移除,因此容器不会扩展 - 也就是说,包含的div高度为 0。

要解决此问题,您需要清除浮动。您可以:

  • 设置overflow: hiddendiv
  • 浮动div
  • 在浮动列表之后添加一个元素clear:both- 这可以使用:after伪元素来完成

这是使用第一个解决方案的演示:http: //jsfiddle.net/FSH4Y/

我补充说:

.application-bar {
    color: #FFFFFF;
    overflow: hidden;
}

这里有一些关于这个问题的更多信息:CSS Tricks: All About Floats - 查看名为The Great Collapse的部分

于 2012-12-21T14:52:31.260 回答
1

你需要在列表下清除,通常我添加一个像

<div style='clear:both;'></div>

这将允许浮动元素的父元素正确计算它的高度。

于 2012-12-21T14:47:04.623 回答
0

您还需要浮动包含背景的 div。一旦你浮动内部 ul,包含的 div 实际上没有内容,因此最终高度为 0。

于 2012-12-21T14:46:52.903 回答