DIV中的元素开始一个新的行

时间:2013-03-12 17:54:45

标签: html css html5 css3

我在HTML / CSS问题上需要你的帮助:我正在创建一个非常简单的网页,其中有一个由包含五个“li”的“ul”组成的导航栏。 “ul”是900px宽,它在“div”内。每个“li”是900/5 = 180px宽。尽管如此,这些元素创造了一条新的界限。

我期待(或多或少): enter image description here

这是我获得enter image description here

这是 HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>My First Website</title>
<link rel="stylesheet" type="text/css" href="css/reset.css">
<link rel="stylesheet" type="text/css" href="css/princstyle.css">
</head>

<body>
<div id="container">
    <div id="fascia">
        <h1>My First Website</h1>
    </div>
    <hr class="menu">
    <div id="nav">
        <ul>
            <li><a href="img/a.jpg">About</a></li>
            <li><a href="img/b.jpg">Photo</a></li>
            <li><a href="img/c.jpg">News</a></li>
            <li><a href="img/d.jpg">Video</a></li>
            <li><a href="img/e.jpg">Contacts</a></li>
        </ul>
    </div>
    <hr class="menu">
</div>

</body>
</html>

这是我的第一个CSS文件(重置标准CSS文件):

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
    display: block;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}

这是我的真实CSS文件

@charset "utf-8";
/* CSS Document */


body 
{
    background-color:#363636;
    background-image:url(../img/noise.png);
    height:100%;
    width:100%;
    margin:0;
    padding:0;
}
#container
{
    position:relative;
    width:1000px;
    height:700px;
    margin:0 auto;
}

#fascia
{
    width:950px;
    padding:25px;
    font-size:4em;
    position:relative;

}

html
{
    height:100%;
}

h1,h2,h3,h4,h5,h6,p{
    color:#FFF;
    font-family:Arial,Helvetica,sans-serif;
    text-align:center;
}

hr.menu
{
    margin:0;
}

#nav
{
    width:100%;
    position:relative;
}

#nav ul 
{
    width:900px;
    margin:0 auto;
}

#nav ul li
{
    display:inline-block;
}


#nav ul li a
{
    display:block;
    width:180px;
    font-weight:bold;
    color:#FFF;
    text-transform:uppercase;
    text-align:center;
    text-decoration:none;
    padding:5px 0;
}


#nav ul li a:hover
{
    background-color:#C09;
}

对不起该邮件的长度,谢谢你的回答!

编辑:这里是jsFiddle

4 个答案:

答案 0 :(得分:8)

内联放置的元素对HTML中的结构很敏感 - 如果您注释掉<li>之间的空白区域或手动删除空白区域,菜单将按预期排列。< / p>

另一种方法是将font-size上的<ul>设置为0,然后重新声明<li>的所需字体大小。 Here是一篇内容丰富的文章,讨论了这个热门问题以及解决此问题的其他方法。

答案 1 :(得分:6)

使用float:left代替display:inline-block.

#nav ul li
{
    display:inline-block;   <-- here
}

答案 2 :(得分:2)

我会为<li>上的每个导航项设置您想要的宽度,然后将<a>设置为width:100%;。在导航列表中使用显示内联块时,不要忘记空白区域。 HTML中的任何额外空格都可以在内联块元素周围添加一些额外的间距像素。

答案 3 :(得分:2)

而不是像其他建议的那样处理浮动(有时候因为需要事后清除而烦人),你也可以删除菜单项之间的空格,如下所示:

<div id="nav">
    <ul>
        <li><a href="img/a.jpg">About</a></li><li><a href="img/b.jpg">Photo</a></li><li><a href="img/c.jpg">News</a></li><li><a href="img/d.jpg">Video</a></li><li><a href="img/e.jpg">Contacts</a></li>
    </ul>
</div>

JSFiddle:http://jsfiddle.net/QNb2j/1/