2010-04-17 12 views
9

He estado tratando de ordenar esta navegación horizontal durante las últimas horas y nada funciona. He intentado con las hojas de estilo reset.css, * {relleno: 0; margin: 0) etc. y todavía tengo espacios vacíos entre mis enlaces de imagen.brechas de CSS entre enlaces de imágenes sin ningún motivo

Como ve, la navegación se compone de una lista desordenada de enlaces de imágenes mostrados en línea, pero hay espacios entre cada imagen, izquierda, derecha, arriba y abajo, y no puedo ver por qué. Es lo mismo en todos los navegadores.

Aquí hay un enlace a la página, y así fuente: Beansheaf Temporary

Enlace a css: http://pentathlongb-yorkshire.co.uk/tomsmith/Beansheaf/styles/fund2.css

El resto del sitio todavía no está obviamente hecho, es sólo la navegación estoy preocupado sobre en este momento.

+1

Hnh, pequeño mundo; He comido allí =) –

Respuesta

11

Para evitar la flotación de la navegación li s, usted tiene dos opciones -a menos adelantados para eliminar los espacios entre las elementos en línea.

<ul> 
    <li><a href="#"><img src="../hotel.jpg" /></a></li 
    ><li><a href="#"><img src="../foodDrink.jpg" /></a></li 
    ><li><a href="#"><img src="../meetingsConferences.jpg" /></a></li> 
</ul> 

Tenga en cuenta que la etiqueta de cierre </li> se cierra en la línea subsiguiente (a excepción de la última), que es válida y mantiene la legibilidad (para mí, al menos).

La otra opción es un poco más desordenado

<ul> 
    <li><a href="#"><img src="../hotel.jpg" /></a></li><!-- 
    --><li><a href="#"><img src="../foodDrink.jpg" /></a></li><!-- 
    --><li><a href="#"><img src="../meetingsConferences.jpg" /></a></li> 
</ul> 

Y sólo utiliza comentarios HTML <!-- ... --> hacer comentarios fuera de los espacios que de otro modo se derrumbó en un solo espacio.

Me gustaría que hubiera alguna manera de especificar (por ejemplo):

ul li img {whitespace: none-between; } 
+0

Gracias por la respuesta, utilicé el método de comentarios para que el flotador no estropeara nada con el CSS. –

+0

@Infiniti Fizz: eres absolutamente bienvenido, gracias por la votación positiva. Además, la próxima vez que vaya allí a comer, puedo decir que ayudé con el sitio web. Incluso si al personal del bar no le importa lo más mínimo =) –

+0

tuve un problema similar, solo que no tenía cada enlace de imagen como un nuevo elemento de la lista. Terminé condensándolos a todos en una sola línea, nunca pensé en poner el comentario. Gracias. Eso ayudará a – Rumpleteaser

1

Intente eliminar todos los espacios y saltos de línea entre los elementos li.

Dado que los muestra en línea, los espacios en el código HTML actuarán como si fueran un espacio en el texto en línea y provocarán un espacio al renderizar.

+0

Gracias, ahora entiendo. (Lo siento, he copiado y pegado esto para todos, pero todos ustedes tuvieron la misma respuesta :)) –

1

Añadir

#mainNav li { 
    float:left; 
} 

a su CSS.

+0

Gracias, ahora lo entiendo. (Lo siento, he copiado y pegado esto para todos, pero todos ustedes tuvieron la misma respuesta :)) –

1

Se debe a que una nueva línea en un documento HTML se interpretará como un espacio en el contenido impreso. Dado que todos sus elementos 'li' están en líneas nuevas, está agregando un espacio entre cada uno de ellos. Asegúrese de mostrarlos como elementos de bloque y flotarlos hacia la izquierda para que se ejecuten uniformemente.

0

Puede flotar los elementos de la lista, entonces el espacio en blanco no INTERFER:

#mainNav li 
{ 
float: left; 
list-style-type: none; 
} 
+0

Gracias, ahora entiendo. (Perdón, he copiado y pegado esto para todos, pero todos tenían la misma respuesta :)) –

6

Otro enfoque, evitando los flotadores, es establecer el tamaño de fuente en el envase a 0, y luego volver a configurarlo copia de seguridad para los LI, como este:

#mainNav 
{ font-size: 0} 

#mainNav li 
{ 
    display: inline; 
    list-style-type: none; 
    font-size: 1em 
} 
+0

Gracias, ahora entiendo. (Lo siento, he copiado y pegado esto para todos, pero todos ustedes tuvieron la misma respuesta :)) –

+0

¡Gracias, amigo! Resuelto mi problema – goksel

+1

tamaño de fuente: 0 funciona en cierto lugar! – Jahmic

0

Utilizo el atributo de altura de línea en la etiqueta li para corregir esto.

ul li { line-height:0; } 
3

la brecha por debajo de imágenes enlaces se debe a la imagen que se está alineado con la línea de base de texto por defecto, se puede resolver simplemente declarando

li img { 
    vertical-align:bottom; 
} 

magia!

+0

Perfecto !!! Esto es exactamente lo que se necesita para pasar de XHTML a HTML5, todas las demás formas no funcionan; dedique la mitad de mi día a descubrir por qué, ¡y su pista fue la única útil! ¡¡¡ARRIBA!!! –

0

La mejor solución para esto viene de http://www.cssplay.co.uk/menus/centered.html. Y citando:

Todo lo que tenemos que hacer es encerrar la etiqueta ul en un contenedor externo que tiene un ancho del 100% y el desbordamiento establecido en oculto.

La etiqueta <ul> se diseñó con una posición relativa y flotó a la izquierda con una posición izquierda del 50%.

Finalmente, la etiqueta <li> también tiene un estilo con una posición relativa, flotada a la izquierda pero esta vez con una posición correcta del 50%.

... y eso, como dicen, es todo lo que se necesita.

0

si está utilizando XSLT para mostrar estos elementos, debe hacer lo siguiente:

<xsl:template match=".//text()"> 
    <xsl:value-of select="normalize-space(.)" /> 
</xsl:template> 
Cuestiones relacionadas