vertical para notas lista horizontal hacer ejemplos desplegable desordenada como codigo bloc html css html-lists justify

html - para - ¿Cómo justifico una lista horizontal?



menu horizontal html sin css (9)

Tengo una barra de navegación horizontal como la siguiente:

<ul id = "Navigation"> <li><a href = "About.html">About</a></li> <li><a href = "Contact.html">Contact</a></li> <!-- ... --> </ul>

Yo uso CSS para eliminar los puntos de bala y hacerla horizontal.

#Navigation li { list-style-type: none; display: inline; }

Estoy tratando de justificar el texto para que cada enlace se extienda de manera uniforme para llenar la totalidad del espacio de la ul . Intenté agregar text: justify a los selectores li y ul , pero aún están alineados a la izquierda.

#Navigation { text-align: justify; } #Navigation li { list-style-type: none; display: inline; text-align: justify; }

Esto es extraño, porque si uso text-align: right , se comporta como se espera.

¿Cómo extiendo los enlaces de manera uniforme?


Enfoque moderno - Flexboxes CSS3

Ahora que tenemos flexboxes CSS3 , ya no necesita recurrir a trucos y soluciones para que esto funcione. Afortunadamente, la compatibilidad con el navegador ha recorrido un largo camino y la mayoría de nosotros puede comenzar a utilizar flexboxes.

Simplemente configure la display del elemento principal para flex y luego cambie la propiedad justify justify-content a space-between space-around o space-around para agregar espacio entre / alrededor de los elementos de la caja flexible del elemento secundario. Luego, agregue prefijos de proveedores adicionales para obtener más soporte de navegador .

Usando justify-content: space-between - space-between :

ul { list-style: none; padding: 0; margin: 0; } .menu { display: flex; justify-content: space-between; }

<ul class="menu"> <li>About</li> <li>Contact</li> <li>Contact Longer Link</li> <li>Contact</li> </ul>

Usando justify-content: space-around - space-around :

ul { list-style: none; padding: 0; margin: 0; } .menu { display: flex; justify-content: space-around; }

<ul class="menu"> <li>About</li> <li>Contact</li> <li>Contact Longer Link</li> <li>Contact</li> </ul>


Debe tener los elementos <li> separados, de lo contrario, la justificación no funcionará.

For example, this: <ul><li>test</li><li>test</li></ul> needs to be like this: <ul> <li>test</li> <li>test</li> </ul>

o al menos tener espacios entre las etiquetas de apertura y cierre <li>.


Esto podría satisfacer sus necesidades:

#Navigation{ } #Navigation li{ list-style-type: none; text-align: center; float: left; width: 50%; /*if 2 <li> elements, 25% if 4...*/ }

demostración : http://jsfiddle.net/KmqzQ/


Esto también se puede lograr usando un pseudo elemento en el elemento ul :

ul { margin: 0; padding: 0; list-style-type: none; text-align: justify; } ul:after { content: ""; width: 100%; display: inline-block; } li { display: inline; }


HTML

<ul id="Navigation"> <li><a href="#">The Missing Link</a></li> <li><a href="#">About</a></li> <li><a href="#">Riluri</a></li> <li><a href="#">Contact us</a></li> <!-- ... --> <li class="stretch"></li> </ul>

CSS

#Navigation { list-style-type: none; text-align: justify; height: 21px; background: #ccc } #Navigation li{ display: inline } #Navigation li a { text-align: left; display:inline-block; } #Navigation .stretch { display: inline-block; width: 100%; /* if you need IE6/7 support */ *display: inline; zoom: 1 }

Ver demostración: http://jsfiddle.net/2kRJv/392/



Necesitas usar un "truco" para hacer que esto funcione.

Ver: http://jsfiddle.net/2kRJv/

HTML:

<ul id="Navigation"> <li><a href="About.html">About</a></li> <li><a href="Contact.html">Contact</a></li> <!-- ... --> <li class="stretch"></li> </ul>

CSS:

#Navigation { list-style-type: none; text-align: justify; height: 21px; background: #ccc } #Navigation li { display: inline } #Navigation .stretch { display: inline-block; width: 100%; /* if you need IE6/7 support */ *display: inline; zoom: 1 }

Detalles sobre el engaño de IE6 / 7: el bloque en línea no funciona en internet explorer 7, 6


Solo haz:

ul { width:100%; } ul li { display:table-cell; width:1%; }


Este blog tiene una solución satisfactoriamente robusta. Sin embargo, necesita algunos cambios leves para adaptarse a una navegación ul/li :

#Navigation { width: 100%; padding: 0; text-align: justify; font-size: 0; font-size: 12px/9; /* IE 6-9 */ } #Navigation>li { font-size: 12px; text-align: center; display: inline-block; zoom: 1; *display: inline; /* IE only */ } #Navigation:after { content:""; width: 100%; display: inline-block; zoom: 1; *display: inline; }

http://jsfiddle.net/mblase75/9vNBs/