Contornos en CSS (la propiedad outline)
¿Has visto alguna vez ese bordecito a puntos alrededor de un enlace?
Suele aparecer cuando el enlace tiene el foco. ¿Si?, Bueno, de todas formas pongo una captura:

Bien, pues esa linea a puntitos no es ni padding, ni margin ni border, (realmente no pertenece al modelo de caja de CSS). Pues resulta que esto se llama contorno y se controla mediante la propiedad outline.
Los contornos se crean alrededor de elementos como enlaces, campos de formularios, mapas de images para destacarlos sobre el resto en un momento determinado (cuando tienen el foco, por ejemplo), y una cosa importante, se dibujan sobre la caja.
Sobre la caja, no en la caja, lo que implica que los contornos, a diferencia de los bordes no ocupan espacio, ni influyen en el tamaño de la caja ni del resto de cajas. En resumidas cuentas, mostrar u ocultar contornos no debe implicar el redibujado de nuestra página.
La otra gran diferencia con los bordes del modelo de cajas de CSS es que nuestros contornos pueden perfectamente no tener formas rectangulares, por ejemplo cuando nuestro elemento ocupa varias lineas de texto:

Vemos que el contorno mantiene siempre sus bordes cerrados, al contrario de lo que ocurre con los bordes:

que se abren o cierran al principio o final de las cajas, cuando es necesario.
Los contornos se controlan con tres propiedades básicas, outline-width, outline-style y outline-color. Que para entendernos funcionan igual (casi) que sus equiavalentes para bordes.
Antes de seguir, por si alguien lo esta pensando, los cuatro lados de un contorno son siempre iguales, nada de outline-top-width ni nada parecido.
outline-width:
El ancho de nuestro contorno, admite los valores thin (fino), medium (mediano) o thick (grueso) o una medida.
outline-style:
Admite los mismos valores que la propiedad border-style, expceto hidden. A saber:
none: Ningún borde.
dotted: El borde es una serie de puntos.
dashed: El borde es una serie de pequeños segmentos de línea.
solid: El borde es un único segmento de línea.
double: El borde son dos líneas sólidas.
groove: El borde luce como si estuviese tallado en el lienzo.
ridge: Lo opuesto a 'grove': el borde parece que estuviera sobresaliendo del lienzo.
inset: El borde hace que toda la caja luzca como si estuviera empotrada en el lienzo.
outset: Lo opuesto a 'inset': el borde hace que toda la caja parezca sobresalir del lienzo.
outline-color:
Pues eso, el color del contorno. Admite expresiones de color como #339966 o el valor invert, que fuerza el color de contorno al opuesto del lienzo, de forma que aseguramos que siempre será visible.
forma compacta
La forma compacta para la propiedad outline es:
outline: width style color
por ejemplo:
-
a{
-
outline: thick solid black;
-
}
Aplicaciones prácticas
Todo esto esta muy bien, parece divertido, pero tambien puede ser util:
Ocultar el contorno en los enlaces
No se a vosotros, pero a mi me parece feo, que aparezca el contorno despues de pulsar un enlace.
-
a{
-
outline:none;
-
}
y listo.
depurar una maquetación
-
* { outline: 2px solid red; }
-
* * { outline: 2px solid green; }
-
* * *{ outline: 2px solid blue; }
Como los contornos no influyen en la posición ni tamaño de nuestras cajas este truco es genial para depurar una maquetación, y saber en todo momento donde esta cada cosa.
Comentarios
De tan acostumbrado que estoy a los contornos, nunca me había preguntado por qué aparecen o como quitarlos.
Gracias por la información.
22 Agosto 2006 Jose
No hay de que, Jose.
Al fin y al cabo para eso estamos ¿verdad?
22 Agosto 2006 hari
Que bueno el truco ese… con javascript puede hacer algo que cada enlace aparezca de un modo… o incluso el mismo enlace.
23 Agosto 2006 faelomx
[…] Si no terminas de ver claro el uso de la propiedad outline no dejes de leer este otro articulo […]
6 Septiembre 2006 el plan seldon — Hasta siempre, clear:both
[…] Si quieres más información sobre este atributo, recomiendo este artículo de el Plan Seldon, un gran blog. « Las mejores herramientas CSS del mes […]
1 Mayo 2007 Truco CSS definitivo contra los enlaces feos | aNieto2K
¡Muchas gracias! Justo ayer estaba comentando con un amigo que creía haber visto en alguna ocasión la manera de quitar ese borde tan feo, pero no lo recordaba. Ya lo he aplicado y funciona de maravilla.
2 Mayo 2007 Guillermo
[…] Si quieres más información sobre este atributo, recomiendo este artículo de el Plan Seldon, un gran blog. […]
2 Mayo 2007 Truco CSS definitivo contra los enlaces feos « Cosas sencillas
Gracias la info ..saludos
3 Mayo 2007 Nikko
Gracias por el artículo. Muy instructivo.
4 Junio 2007 Daniel Blázquez
[…] g) Sobre outline: link […]
10 Septiembre 2007 Federico Meson » Marqueteando una Web
[…] [para profundizar un poco más en este tema…] […]
30 Septiembre 2007 Boozox » Solución a dos pesadillas del CSS
Hola gente! FANTASTICA página
Yo tambien usaba la propiedad outline hasta que lei por ahi que quitaba accesibilidad a un site
(Sin ir más lejos, intentar navegar por una página sin el ratón y solo con el tabulador del teclado y que tenga la propiedad outline:none
Es imposible :(
Salu2 a tod@s!
16 Noviembre 2007 John
interesting
27 Noviembre 2007 Achilles
Sorry :(
27 Noviembre 2007 Kostantinos
Nice
28 Noviembre 2007 Vasileios
Cool!
28 Noviembre 2007 Othon