浮动后背景颜色不起作用

时间:2012-10-18 06:44:23

标签: html css

我是CSS新手,所以我决定尝试自己重新创建this页面。

但我遇到了以下问题:

HTML

        <!-- Header -->
        <header>
            <h1>w3schools.com</h1>
            <img src="Images/w3schoolslogo.gif">

            <form method="post" action="w3_schools.html">
                <input type="text" name="search" placeholder="Search w3schools.com"/>
                <input type="submit" value="Search">
            </form>
        </header>
        <!---->

        <!-- Top navigation -->
        <nav class="top_navigation">
            <ul>
                <li><a href="">Home</a></li>
                <li><a href="">HTML</a></li>
                <li><a href="">CSS</a></li>
                <li><a href="">Javascript</a></li>
                <li><a href="">JQuery</a></li>
                <li><a href="">XML</a></li>
                <li><a href="">ASP.NET</a></li>
                <li><a href="">PHP</a></li>
                <li><a href="">SQL</a></li>
                <li><a href="">More...</a></li>                   
            </ul>

            <aside>
                <ul>
                    <li><a href="">References</a></li>
                    <li><a href="">Examples</a></li>
                    <li><a href="">Forum</a></li>
                    <li><a href="">About</a></li>
                </ul>
            </aside>
        </nav>
        <!---->

CSS

ul {
  list-style-type: none;
  margin: 0px;
  padding: 0px;

}

/* Header */
header {
    position: relative;
}

header h1 {
    display: none;
}

header form {
    position: absolute;
    bottom: 0px;
    right: 0px;
}

header form input[type="text"]  {
    border: 1px solid #D3D3D3;
}

/* Top navigation */
.top_navigation {
    clear: both;
    text-transform: uppercase;
    margin-top: 10px;
    font-size: 80%;
    background-color: green;
}

.top_navigation a:link, .top_navigation a:visited{
    color: #555555;
    text-decoration: none;
}

.top_navigation a:hover {
    color: red;
}

.top_navigation li {
    float: left; 
    margin-left: 10px;
}

.top_navigation aside {
    float:right; 
}

问题是nav元素的背景不是绿色。我想它有浮动的东西,但我不知道如何修复。我试过几乎到处都放clear:both,但没有绿色。 :(

你能帮帮我吗?提前致谢!

3 个答案:

答案 0 :(得分:2)

您不需要额外的DIV。将overflow: hidden;添加到.top_navigation

.top_navigation {   
    text-transform: uppercase;
    margin-top: 10px;
    font-size: 70%;
    background-color: green; overflow: hidden;
}

Working Demo

答案 1 :(得分:1)

您的LI元素是浮动的,因此UL bg的高度为0.所以您有几个选项

CSS“清除修复”是解决此问题的一种方法:

CSS:

.cf:before, .cf:after {
  content: " "; /* 1 */
  display: table; /* 2 */
}
.cf:after {
  clear: both;
}
.cf {
  *zoom: 1;
}

HTML:

   <ul class="cf">
         <li><a href="">References</a></li>
         <li><a href="">Examples</a></li>
         <li><a href="">Forum</a></li>
         <li><a href="">About</a></li 
   </ul>

示例:http://jsfiddle.net/8UDVw/1/

如果您知道LI的高度不会改变,您可以手动设置UL的高度:

.top_navigation ul{height:30px;}

答案 2 :(得分:1)

您需要clear:both末尾的<nav>元素,以便将其调整为浮动元素:

<nav class="top_navigation">
    <ul>
       ...
    </ul>
    <aside>
       ...
    </aside>
    <div style="clear:both;"></div>
</nav>

(这只是一个例子,当然,不要使用内联样式)

示例:http://jsfiddle.net/7gWEu/