0

我在这个论坛上搜索了很多问题,但似乎没有帮助。我试图将我的导航栏居中,但是尽管遵循大多数答案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 
4

5 回答 5

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/

于 2013-05-13T11:12:59.107 回答
0

尝试margin:auto使用精确width并删除float:left jsfiddle 链接

首先float:left需要计算精确widthul。然后我们需要float:none利用margin:auto;

于 2013-05-13T13:21:25.950 回答
0

这是你说的部分吗?

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

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

于 2013-05-13T06:56:21.050 回答
0

尝试这个:

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

你可以删除浮动

于 2013-05-13T07:08:52.507 回答
-1

尝试这个:

#nav{
margin-left:10px; (Increase the px until the nav reach center)
}
于 2013-05-13T06:53:24.613 回答