Search code examples
htmlcssalignmentstylesheetnavbar

how do I center horizontal navmenu and without splitting each link


I have been desperately trying to get the navigation menu to center but I simply cannot. I have tried display inline block text align center and other stuff but it wont work when i try to make it to help would be gr8t

<html>
<style>
* {
    margin: 0px;
    padding: 0px;
    }

body {
    font-family: verdana;
    background-color: #FFF;
    padding: 50px;
    }

h1 {
    text-align: center;
    margin-bottom: 50px;
    }


ul#navmenu, ul.sub1, ul.sub2 {
    list-style-type: none;
    font-size: 9pt;
    }

ul#navmenu li {
    width: 96.6px;
    text-align: center;
    position: relative;
    margin-right: 0px;
    float: left;
    }
       #navmenu ul {
           display: inline-block;
           list-style-type: none;
   }    
ul#navmenu a {
    text-decoration: none;
    display: block;
    width: 96.6px;
    height: 25px;
    line-height: 25px;
    background-color: #2E2E2E;
    border: 1px solid #777777;
    border-top: 2px solid #777777;
    color: white;
    font-family: Arial, sans-serif;
    font-weight: bold;
    font-face: Arial;
    float: left;
    text-align: center;
    }

ul#navmenu .sub1 li {
    }

ul#navmenu .sub1 a {
    margin-top: 0px;
    }

ul#navmenu .sub2 a {
    margin-left: 0px;
    }

ul#navmenu li:hover > a {
    background-color: grey;
    }

ul#navmenu li:hover a:hover {
    background-color: red;
    }

ul#navmenu ul.sub1 {
    display: none;
    position: absolute;
    top: 26px;
    left: 0px;
    }

ul#navmenu ul.sub2 {
    display: none;
    position: absolute;
    top: 0px;
    left: 97.6px;
    }

ul#navmenu li:hover .sub1 {
    display: block;
    }

ul#navmenu .sub1 li:hover .sub2 {
    display: block;
    }

.darrow {
    font-size: 11pt;
    position: absolute;
    top: 5px;
    right: 4px;
    }

#navmenu {
        display: inline-block;
        text-align: center;
        list-style-type: none;
        margin: 0px auto;
        padding: 0px;
        position: relative;
}
.rarrow {
    font-size: 13pt;
    position: absolute;
    top: 6px;
    right: 4px;
    }

#page1 .link1{
color: grey;
border-top: 2px solid red;
}
#page2 .link2{
color: grey;
border-top: 2px solid red;
}
#page3 .link3{
color: grey;
border-top: 2px solid red;
}

</style>
</head>
<body>

<h1> Tom's Navigation Menu</h1>

<div id="page1">
<ul id="navmenu">
<li><a href="dropdown1.html" class="link1">hyperlink 1</a></li>
<li><a href="dropdown2.html" class="link2">hyperlink 2</a><font color="white">
<span class="darrow">&#9660;</font></span>
    <ul class="sub1">
        <li><a href="#">hyperlink 2.1</a></li>
        <li><a href="#">hyperlink 2.2</a></li>
        <li><a href="#">hyperlink 2.3</a></li>
    </ul>
</li>
<li><a href="#">hyperlink 3</a></li>
<li><a href="#">hyperlink 4</a><span class="darrow"><font color="white">&#9660;               

 </font></span> 
    <ul class="sub1">
        <li><a href="#">hyperlink 4.1</a></li>
        <li><a href="#">hyperlink 4.2</a></li>
        <li><a href="#">hyperlink 4.3</a><span class="rarrow">
<font color="white">&#9654;</font></span>
            <ul class="sub2">
                <li><a href="#">hyperlink 4.3.1</a></li>
                <li><a href="#">hyperlink 4.3.2</a></li>
                <li>
<a href="dropdown3.html" class="link3">hyperlink 4.3.3</a></li>
            </ul>
        </li>
    </ul>
</li>
<li><a href="#">hyperlink 5</a></li>
</ul></div>


</body>
</html>

Solution

  • Try adding this line to your CSS:

    #page1 {text-align:center;}
    

    What we're doing is setting the parent element of #navmenu, which is #page1, to text-align:center;.

    See this jsFiddle: http://jsfiddle.net/JQBSa/