2012-06-10 8 views
10

Tengo una lista desordenada que estoy usando como una barra de navegación simple. Eso se parece a continuación:Lista desordenada que no se alinea completamente a la izquierda en un div

enter image description here

Como se puede ver sin embargo que <li> elementos no están alineando todo el camino a la izquierda de la <div> están contenidos en He tratado text-align: left; en el <div> que contiene pero que parece. para no tener efecto

HTML relevante:

<div id="menu">                   
    <div id="menutop">                 
     <ul>                    
      <li><a href="#">Home</a></li>            
      <li><a href="#">About</a></li>            
     </ul>                   
    </div>  

CSS relevante:

#menu { 
    width: 800px; 
    margin: 0 auto; 
} 

#menu div { 
    float: left; 
    width: 400px; 
    height: 60px; 
    background-color: #CACACA; 
} 

#menutop { 
    text-align: left; 
} 

#menutop ul { 
    list-style: none; 
} 

#menutop li { 
    display: inline; 
    padding: 10px; 
} 

#menutop a { 
    color: #000000; 
    text-decoration: none; 
} 

#menutop a:hover { 
    text-decoration: underline; 
} 

¿Alguna idea?

+0

¿Ha intentado eliminar el 'margen' de' ul'? – PeeHaa

+0

Colocar el código tal como está en jsfiddle funciona como se esperaba. http://jsfiddle.net/5wCZk/. Tu problema está en otra parte. –

+0

Siempre puede usar un margen negativo: 'margin-left: -10px' – TylerH4

Respuesta

29

ul y li tienen margen o relleno, según el navegador, de forma predeterminada. Necesita anular este estilo por defecto dentro de su menú:

#menu ul, #menu li { 
    margin: 0; padding: 0; 
} 

ver una demostración here

Nota: Por defecto, jsfiddles hace un restablecimiento CSS, por lo que no siempre se adapta bien para probar este tipo de cosas . Asegúrese de deshabilitar "CSS normalizado" cuando busque este tipo de error.

+0

Gracias. No me di cuenta de que los elementos 'ul' y' li' tenían relleno y márgenes por defecto. –

+0

@NicYoung: Es por eso que aparecen sangrados cuando se usan como una lista. Diferentes navegadores logran la sangría de diferentes maneras. – Eric

2

Intente utilizar un CSS Reset.

La forma más simple es:

* { margin: 0; padding: 0; } 
+1

No estoy seguro de que reiniciar todo sea la mejor manera de hacerlo aquí. Eso probablemente romperá las cosas por todos lados. – Eric

+0

@Eric: si el restablecimiento rompe su sitio web, ** ¡existe su problema! ** –

+0

Eso es cierto. Sin embargo, hay otro problema aquí. Después de hacer un reinicio, debe definir un estilo básico para que el 'ul' se use en una _actual lista_. Una vez más, tienes el mismo problema. Necesita un margen y restauración de relleno _específicos_ para la navegación. – Eric

0

<ul> elemento es align izquierda, pero <li> elementos tienen padding-left conjunto a 10px. Es por eso que el primer elemento está ligeramente a la derecha.

2

puede anular el relleno y el margen de ul y li.

este código simple:

.menu ul, .menu li{ 
    margin:0; 
    padding:0; 
} 
2

Se puede quitar el margen y el relleno del menú

#menu *{ 
margin:0; 
padding:0; 
} 
Cuestiones relacionadas