user2672732
user2672732

Reputation: 43

CSS, How do I center horizontal menu and submenu?

i am learning css and i don't know center a menu and submenu. i am using margin: auto or margin-left and margin-right to auto but it is not working. Any help would be appreciated. Thanks

HTML

    <div id="menu">                          
    <ul id="nav">                          
        <li><a href="#">item1</a>            
            <ul>                               
                <li><a href="">subitem1</a></li> 
            <li><a href="">subitem2</a></li> 
            <li><a href="">subitem3</a></li> 
           </ul>                             
        </li>                                
        <li><a href="#">item2</a>            
            <ul>                               
                <li><a href="">subitem1</a></li> 
              <li><a href="">subitem2</a></li> 
                <li><a href="">subitem3</a></li> 
            <li><a href="">subitem4</a></li> 
            <li><a href="">subitem5</a></li> 
            <li><a href="">subitem6</a></li> 
            </ul>                            
        </li>                                
    </ul>                                  
</div>                                   

CSS

    #menu {                  
  clear: none;           
  width: 960px;          
}                        
ul#nav {                 
  width: 960px;          
  margin: 0;             
  padding: 0;            
  list-style: none;      
}                        
ul#nav li {              
    float: left;           
    display: inline-block; 
}                        
ul#nav li a {            
  line-height: 40px;     
    padding: 0 30px;       
  text-align: center;    
}                        
ul#nav ul {              
    display: none;         
}                        
ul#nav li:hover > ul {   
  position: absolute;    
    display: block;        
  margin: auto;          
    width: 100%;           
}                        

fiddle http://jsfiddle.net/davidgonzalo/ZzaDY

Upvotes: 2

Views: 2098

Answers (2)

Shaun
Shaun

Reputation: 1220

Is this your desired outcome? http://jsfiddle.net/shaunp/ZzaDY/1/

(Keep in mind the fiddle window is small so you may have a scrollbar - the content is indeed centered)

  1. Add text-align:center; to ul#nav
  2. Get rid of float: left; from ul#nav li
  3. Get rid of position:absolute; from ul#nav li:hover > ul

CSS

#menu {
  clear: none;
  width: 960px;
}
ul#nav {
  width: 960px;
  margin: 0;
  padding: 0;
  list-style: none;
  text-align:center;
}
ul#nav li {
    display: inline-block;  
}
ul#nav li a {
  line-height: 40px;
    padding: 0 30px;
}
ul#nav ul {
    display: none;
}
ul#nav li:hover > ul {
  display: block;
  margin: auto;
  width: 100%;
}

Upvotes: 1

Ashwani
Ashwani

Reputation: 3491

Use:

ul, li {

 text-align:center;

}


li
{
    margin-left: -40px;
}

This will center text in menu and sub-menu.

Upvotes: 0

Related Questions