7

我想在每一端创建一个带有图像的导航栏,以使其变得纯净。

所以,我在下面创建了 HTML 和 CSS,效果很好。我的菜单项在 ul/li 列表中。

当我对列表进行样式设置以将所有项目放在一行上时,末端的图像就会消失。那是怎么回事?我如何解决它?

罪魁祸首是 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>

--- 测试.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

我建议添加溢出:隐藏;(和缩放: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: both您可以在 UL 之后立即添加一个空 div 。或者您可以将这些样式添加到 UL

width: 100%;
overflow: auto;

请参阅this以获得解释。

于 2010-01-14T04:29:00.260 回答
1

height: 28px;在你ul的 css 中添加一个。Jonathan 和 Chetan 已经很好地解释了为什么会这样,但重申一下,浮动元素的父级不受浮动子级高度的影响。

于 2010-01-14T04:30:36.820 回答