How To Center Your Navigation Menu (The End ALL)!
As always, there are many ways to skin a cat. Below, I've complied/created the six best/easiest ways to center your navigation menu (AKA: nav, navbar, menu). All the demos are done up with a little style, however, all the code shown below, is stripped down to it's bare essentials (i.e. only enough to make it center). *{margin:0;padding:0;} is assummed applied to all below code.
Method #1 (and Demo) is primarily using margin:auto; to center the nav. If your menu items (li/a) are a fixed width, then this method is probably the easiest way to center your nav. The essentail pieces of code used to center the nav are in bold.
The CSS
#nav {
width:750px;
margin:0 auto;
list-style:none;
}
#nav li {
float:left;
}
#nav a {
display:block;
text-align:center;
width:150px; /* fixed width */
text-decoration:none;
}
The HTML
<ul id="nav"> <li><a href="#">HOME</a></li> <li><a href="#">CAPABILITIES</a></li> <li><a href="#">ABOUT US</a></li> <li><a href="#">RFQ</a></li> <li><a href="#">CONTACT US</a></li> </ul>
Method #2 (and Demo) is primarily using position:absolute; to center the nav. I've never actually centered a menu in this way, but, if your menu items (li/a) are a fixed width, then this is a pretty easy way to center your nav also. The essentail pieces of code used to center the nav are in bold.
The CSS
div {
position:relative;
}
#nav {
position:absolute;
left:50%;top:0;
margin-left:-375px; /* negative margin equal to half the width */
width:750px;
list-style:none;
}
#nav li {
float:left;
}
#nav a {
display:block;
text-align:center;
width:150px; /* fixed width */
text-decoration:none;
}
The HTML
<div> <ul id="nav"> <li><a href="#">HOME</a></li> <li><a href="#">CAPABILITIES</a></li> <li><a href="#">ABOUT US</a></li> <li><a href="#">RFQ</a></li> <li><a href="#">CONTACT US</a></li> </ul> </div>
Method #3 (and Demo) is primarily using text-align:center; to center the nav. If your menu items (li/a) are a variable width, and you DON'T need a display block environment for the li/a, then this is the easiest way for you to center your nav. The essentail pieces of code used to center the nav are in bold.
The CSS
#nav {
text-align:center;
}
#nav li {
display:inline;
}
#nav a {
text-decoration:none;
padding:0 30px; /* variable width */
}
The HTML
<ul id="nav"> <li><a href="#">HOME</a></li> <li><a href="#">CAPABILITIES</a></li> <li><a href="#">ABOUT US</a></li> <li><a href="#">RFQ</a></li> <li><a href="#">CONTACT US</a></li> </ul>
Method #4 (and Demo) is primarily using display:inline-block; to center the nav. If your menu items (li/a) are a variable width, and you DO need a display block environment for the li/a, then this is probably going to be the easiest way for you to center your nav. IE6/7 are the only ones that need a little helping hand (as shown below).
The CSS
#nav {
text-align:center;
}
#nav ul {
display:inline-block;
list-style:none;
}
* html #nav ul { /* Target IE6 */
display:inline;
}
*+html #nav ul { /* Target IE7 */
display:inline;
}
#nav li {
display:inline;
}
#nav a {
float:left;
text-decoration:none;
padding:0 30px; /* variable width */
}
The HTML
<div id="nav"> <ul> <li><a href="#">HOME</a></li> <li><a href="#">CAPABILITIES</a></li> <li><a href="#">ABOUT US</a></li> <li><a href="#">RFQ</a></li> <li><a href="#">CONTACT US</a></li> </ul> </div>
Method #5 (and Demo) is primarily using position:relative; to center the nav. If your menu items (li/a) are a variable width, and you DO need a display block environment for the li/a, and/or you want to center a "widthless float", then this is another easy way to center your nav. Again, IE6/7 are the only ones that need a little helping hand (as shown below).
The CSS
#wrap {
overflow:hidden;
position:relative; /* IE7 needs this */
}
#nav {
float:left;
position:relative;
left:50%;
}
#nav ul {
float:left; /* IE6 needs this */
position:relative;
left:-50%;
list-style:none;
}
#nav li {
float:left;
}
#nav a {
float:left;
text-decoration:none;
padding:0 30px; /* variable width */
}
The HTML
<div id="wrap"> <div id="nav"> <ul> <li><a href="#">HOME</a></li> <li><a href="#">CAPABILITIES</a></li> <li><a href="#">ABOUT US</a></li> <li><a href="#">RFQ</a></li> <li><a href="#">CONTACT US</a></li> </ul> </div> </div>
Method #6 (and Demo) is primarily using display:table; to center the nav. If your menu items (li/a) are a variable width, and you DO need a display block environment for the li/a, then this is yet another, and final way to center your nav. And Yet Again, IE6/7 are the only ones that need a little helping hand (as shown below).
The CSS
#nav {
display:table; /* centers modern browsers */
margin:0 auto; /* centers modern browsers */
text-align:center; /* centers IE6/7 */
}
#nav ul {
list-style:none;
display:inline-block; /* IE6/7 haslayout trip-switch */
}
#nav ul {
display:inline; /* IE6/7 haslayout trip-switch, and IE6/7 only need ul to be display inline, yet does no harm to others */
}
#nav li {
display:inline;
}
#nav a {
float:left;
text-decoration:none;
padding:0 30px; /* variable width */
}
The HTML
<div id="nav"> <ul> <li><a href="#">HOME</a></li> <li><a href="#">CAPABILITIES</a></li> <li><a href="#">ABOUT US</a></li> <li><a href="#">RFQ</a></li> <li><a href="#">CONTACT US</a></li> </ul> </div>



