5.1.1. —perdido, buscando el diseño ideal

Pequeño tip para CSS: word-spacing

Usando word-spacing para remover espacios en blanco (y volver a agregarlos).

Ignacio Marcos me pasa el meme del pequeño tip para CSS y yo lo tomo casi como un reto.

Supongamos que necesitamos armar un menú horizontal basado en una lista de elementos (UL > LI).

<ul>
	<li><a>foo</a>
	<li><a>bar</a>
	<li><a>dim</a>
</ul>
/* Saltos de linea agregados a propósito */
La primera regla sería que los elementos de la lista se muestren en linea.

li {display: inline}

Si definen un fondo para los A, notarán que se muestra un espacio entre cada uno de ellos. Esto ocurre porque el salto de linea es mostrado como un espacio en blanco —existe en los navegadores una heurística para determinar cuándo debe agregarse un espacio. Ejemplo 1

Una de las soluciones sería modificar el código HTML original borrando los saltos de linea (y de paso se ahorrarían un problema con Internet Explorer en otras circunstancias). La otra es recurrir a la propiedad word-spacing.

word-spacing tiene un valor por defecto de 0; los valores negativos disminuyen el espacio entre palabras. La solución es definir un valor negativo (entre 0.2em y 0.3em).

ul {word-spacing:-0.3em;}
li {display:inline;}
a {background:lime;}

Ejemplo 2.

Dos consejos más:

  • Definiendo un padding horizontal se mantiene el efecto (de fondo continuo) y se simula un poco de espacio entre palabras (para evitar que éstas queden superpuestas).
  • Si uno de los A contiene dos palabras pueden volver a definir word-spacing: 0 para que se muestre un espacio normal entre palabras.

El ejemplo final sería:

ul {word-spacing:-0.3em;}
li {display:inline;}
a {
	background:lime;
	padding:0 0.3em;
	word-spacing:0;
	}

Ejemplo 3.

Publicado el 13 de febrero de 2007 en las categorías CSS

10 comentarios. Agregá el tuyo →

Juan

Buenísimo! Vamos a ver si puedo hacer mi aporte.

13 de febrero de 2007

Federico

Iba a desafiarte, pero no quería tampoco crear una replicación infinita.

14 de febrero de 2007

Gancé

word-spacing… Muuy bueno. Gracias. :D
No habrá más por casualidad?

15 de febrero de 2007

IgnacioMarcos

bárbaro fede, excelente!

PD: te faltó pasar la posta! ;)

15 de febrero de 2007

links for 2007-02-15 en newdisco

[…] Pequeño tip para CSS: word-spacing @ 5.1.1. Tip de CSS para evitar espacios indeseados en listas no ordenadas. (tags: css help tip howto tools) […]

15 de febrero de 2007

Federico

Gancé: La verdad que tenía otro efecto mucho más sorprendente, pero quería mantener la sencillez que caracterizó a los otros y proponer algo que tuviera amplio soporte.
Ignacio: Walter, Juan, Jon y Diego saben que se los pasaría a ellos. :)

16 de febrero de 2007

WalteR Funk

Venía leyendo y no me encontraba, seguí leyendo y pensé que zafaba, pero en la ultima línea encontré mi nombre…
y bue, vamos con otro meme!

Haré mi aporte también.

16 de febrero de 2007

Juan

Prometo aportar! pero no tengo ni idea cuándo :P

22 de febrero de 2007

Fran

Yo no quiero ser aguafiestas, pero el tip no funciona en Safari.

13 de mayo de 2007

Federico

Touche. :(

13 de mayo de 2007

Agregá tu comentario

Agregá tu comentario

© Federico Martín Panicobpm230 (arroba) gmail (punto) com