7

両端に画像を付けてナビゲーションバーを作成して、きれいにしたいです。

そこで、以下の HTML と CSS を作成しましたが、うまくいきました。私のメニュー項目は ul/li リストにあります。

すべてのアイテムを 1 行に配置するようにリストのスタイルを設定すると、両端の画像が消えます。どうしたの?どうすれば修正できますか?

犯人は float: left; です。下。

--- test.html ---

<html>
<head>
    <link rel="stylesheet" href="test.css" type="text/css">
</head>
<body>
    <div id="container">
        <div id="header-usernav" class="span-6 last large">
            <div id="header-usernav-leftside"><div id="header-usernav-rightside">
                <ul>
                    <li>Register</li>
                    <li>Signin</li>
                    <li>Signout</li>
                </ul>
            </div></div>
        </div>
    </div>
</body>
</html>

--- test.CSS ---

#container #header-usernav {
    background: url('http://www.webcredible.co.uk/i/bg-i-resources.gif');
    height: 28px;
    background-repeat: repeat;
}
#container #header-usernav-leftside {
    background: url('http://www.webcredible.co.uk/i/nav-l-h.gif');
    background-position: top left;
    background-repeat: no-repeat;
}
#container #header-usernav-rightside {
    background: url('http://www.webcredible.co.uk/i/nav-r-h.gif');
    background-position: top right;
    background-repeat: no-repeat;
}

#container #header-usernav ul {
    list-style: none;
    padding: 0;
    margin: 0;
    margin-left: 10px;
}

#container #header-usernav li {
    float: left;
    padding: 0;
    margin: 0 0.2em;
}

画像が異なるため、html/css をコピーして貼り付けてテストできます。

どうしたんだ?私は何を間違っていますか?

4

4 に答える 4

8

overflow:hidden; を追加することをお勧めします。(および zoom: 1; IE6 のクロス ブラウザー互換性を維持するため) を、クリア div を追加するのではなく、コンテナー div に追加します。Clear はソース コードを肥大化させます。

#container #header-usernav ul {
    list-style: none;
    padding: 0;
    margin: 0;
    margin-left: 10px;
    overflow: hidden;
    zoom: 1;
    height: 28px; /* This is needed to ensure that the height of the rounded corners matches up with the rest of the bg.
}
于 2010-01-14T04:35:32.213 に答える
5

フロートされた子のみを使用すると、外側のコンテナーは 0px の高さを返します。そのため、浮動要素の直後に次を配置できます。

<div class="clear"></div>

そして、次のルールを追加します。

.clear { clear:both; }

例えば:

<div id="container">
    <div id="header-usernav" class="span-6 last large">
        <div id="header-usernav-leftside">
          <div id="header-usernav-rightside">
            <ul>
                <li>Register</li>
                <li>Signin</li>
                <li>Signout</li>
            </ul>
            <div class="clear"></div>
          </div>
        </div>
    </div>
</div>
于 2010-01-14T04:27:49.693 に答える
2

あなたのdivには高さがありません。clear: bothUL の直後に空の div を追加できます。または、これらのスタイルを UL に追加できます

width: 100%;
overflow: auto;

説明については、これを参照してください。

于 2010-01-14T04:29:00.260 に答える
1

cssに a を追加height: 28px;します。ulJonathan と Chetan は、なぜこれが機能するのかについて非常に優れた説明をすでに提供していますが、繰り返しますが、float 要素の親は、float された子の高さの影響を受けません。

于 2010-01-14T04:30:36.820 に答える