1

我对 CSS 很陌生,所以我决定尝试自己重新创建这个页面。

但是我遇到了以下问题:

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; 
}

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

你能帮我么?提前致谢!

4

3 回答 3

2

为此,您不需要额外的 DIV。添加overflow: hidden;.top_navigation

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

工作演示

于 2012-10-18T06:51:12.280 回答
1

你的 LI 元素是浮动的,所以 UL bg 的高度是 0。所以你有几个选择

CSS 'Clear Fix' 是解决这个问题的一种方法:

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;}
于 2012-10-18T06:49:56.300 回答
1

您需要clear:both在 的末尾添加一个元素<nav>,以使其调整为浮动元素的大小:

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

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

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

于 2012-10-18T06:52:19.420 回答