无法将导航栏对齐到中心

时间:2013-05-13 06:47:46

标签: css html5 navbar

我在这个论坛上搜索了很多问题但它似乎没有帮助。我试图将导航栏放在中心位置,但是尽管大部分答案都是text-align = center;,但这对我来说并不适用。

ASP.NET中的HTML代码:

<html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
        <title>untitled</title>
        <link rel="stylesheet" href="css/style.css" type="text/css" />

        <!--[if lt IE 8]>
            <script src ="http://ie7-js.googlecode.com/svn/version/2.1(beta2)/IE8.js"></script>
        <![endif]-->    
    </head>

    <body>
        <ul id="nav">
            <li><a href="#">Home</a></li>
            <li><a href="#">Login</a></li>
            <li><a href="#">Report</a></li>
            <li><a href="#">Recent cases</a></li>   
            <li><a href="#">About</a></li>      
        </ul>

        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>    
        <script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/jquery.effects.core.js" type="text/javascript"></script>
        <script type="text/javascript" src="js/scripts.js"></script>
    </body>
</html> 

CSS代码:

body {
 font-family: helvetica, arial, sans-serif;
 background: #e3e3e3;
 text-align: center;
}

/* MENU */

#nav {
text-align: center;
 background: #e5e5e5;
 float: left;
 margin: 0; padding: 0;
 border: 1px solid white;
 border-bottom: none;
}

#nav li a, #nav li {
    text-align: center;
 float: left;
}

#nav li {
text-align: center;
 list-style: none;
 position: relative;
}

#nav li a {
text-align: center;
 padding: 1em 2em;
 text-decoration: none;
 color: white;
 background: #292929;
 background: -webkit-gradient(linear, left top, left 25, from(black), color-stop(4%, #3c3c3c), to(#292929));
 border-right: 1px solid #3c3c3c;
 border-left: 1px solid #292929;
 border-bottom: 1px solid #232323;
 border-top: 1px solid #545454;
}

#nav li a:hover {
 background: #2a0d65;
 background: -moz-linear-gradient(top, #11032e, #2a0d65);
 background: -webkit-gradient(linear, left top, left bottom, from(#11032e), to(#2a0d65));
}


/* Submenu */

.hasChildren {
position: absolute;
width: 5px; height: 5px;
background: black;
right : 0;
bottom: 0;
}    

#nav li ul {
 display: none;
 position: absolute;
 left: 0;
 top: 100%;
 padding: 0; margin: 0;
}

#nav li:hover > ul {
 display: block;
}

#nav li ul li, #nav li ul li a {
 float: none;
}

#nav li ul li {
 _display: inline; /* for IE6 */
}

#nav li ul li a {
 width: 150px;
 display: block;
}

/* SUBSUB Menu */

#nav li ul li ul {
 display: none;
}

#nav li ul li:hover ul {
 left: 100%;
 top: 0;
}


#nav li ul 

5 个答案:

答案 0 :(得分:1)

确实,最简单的方法是使用text-align: center;。您遇到的问题是<li>标记是块级元素。因此,无法在外部text-align元素上应用<ul>(仅适用于内联元素),以便使内部<li>元素居中。因此,您必须首先通过应用<li>属性告诉display标记的行为与内联元素相同:

标记:

<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>    
</ul>

风格:

ul {
    margin: 0;
    padding: 0;
    text-align: center;
}

ul li {
    display: inline-block;  // or display: inline;
}

以下是关于jsfiddle的工作示例:http://jsfiddle.net/7MKdk/

答案 1 :(得分:0)

这是你的意思吗?

#nav li a, #nav li {
    text-align: center;
    float: left;
}

顺便说一下,尝试删除float:left部分。你的代码几乎让我疯狂。您应该添加ID和类。

答案 2 :(得分:0)

试试这个:

#nav{
    position:absolute;
    left:30%;
}

你可以移除浮动

答案 3 :(得分:0)

尝试使用完全margin:auto的{​​{1}}并移除width jsfiddle link

首先需要float:left来计算float:left的确切width。然后我们需要ul来使用float:none

答案 4 :(得分:-1)

试试这个:

#nav{
margin-left:10px; (Increase the px until the nav reach center)
}