Contornos

Resaltado de contorno para propósitos de accesibilidad


Mediante CSS se pueden modificar ciertos detalles relacionados con el modo en que interactua el usuario con un alguno de los componentes del interfaz de la página.

Las propiedades para contornos

La familia de propiedades outline-* nos permiten modificar el comportamiento del contorno de los elementos: una línea divisoria que rodea el contenido externo del propio elemento. A diferencia de los bordes, esta línea divisoria, por defecto no ocupa espacio y no tiene porque tener una forma rectangular.

Es fácil de observar esta línea divisoria en los navegadores, pulsando TAB y moviéndonos por los diferentes enlaces de la página. Generalmente, aparece como una línea punteada y es muy similar al funcionamiento de los bordes.

PropiedadValorSignificado
outline-widthmedium | thin | thick | Tamaño de los bordes. Tamaño predefinido o específico.
outline-style | noneIdem a los bordes. Estilo de la línea divisoria.
outline-colorinvert | Invierte el color de la misma.
outline-offsetDesplazamiento del contorno.

La propiedad outline-color permite modificar el color de la línea divisoria, en el caso de que el tamaño outline-width sea mayor que cero o tenga un valor definido de las palabras clave mencionadas anteriormente.

Además, al igual que con los bordes, también se puede cambiar el estilo de la línea con outline-style. Veamos un ejemplo, comparándolo con los bordes:

.element {
  text-align: center;

  border-width: 5px;
  border-style: solid;
  border-color: black;

  outline-width: 5px;
  outline-style: solid;
  outline-color: red;
}
<div class="element">
  <p>¡Hola amigos! ¡No se olviden de visitar manz.dev!</p>
</div>

Como puedes ver, es muy similar a los bordes de CSS, pero los contornos outline son como una especie de borde exterior.

La propiedad outline-offset

Sin embargo, en los bordes de CSS no existe la propiedad border-offset. La propiedad outline-offset nos permite ampliar el desplazamiento o espacio interior de la línea de contorno.

Observa el mismo ejemplo anterior, pero estableciendo un outline-offset de 10px:

.element {
  text-align: center;

  border-width: 5px;
  border-style: solid;
  border-color: black;

  outline-width: 5px;
  outline-style: solid;
  outline-color: red;
  outline-offset: 10px;
}
<div class="element">
  <p>¡Hola amigos! ¡No se olviden de visitar manz.dev!</p>
</div>

Atajo: La propiedad outline

Es posible, al igual que con muchas otras propiedades, resumir en una sola propiedad para ahorrar espacio. El orden recomendado es el siguiente:

div {
  /* outline: <color> <style> <width> */
}

Veamos el mismo ejemplo anterior, pero utilizando la propiedad de atajo outline, y nuevamente, comparándola con la propiedad de atajo border:

.box {
  text-align: center;
  border: 5px solid black;
  outline: 5px solid red;
}
<div class="box">
  <p>¡Hola amigos! ¡No se olviden de visitar manz.dev!</p>
</div>

Nota: En muchas ocasiones, estas propiedades son usadas por el desarrollador para indicar un outline: 0 y desactivar esta característica de contorno. Hay que tener mucho cuidado con esto, ya que este contorno visual es muy importante en el ámbito de la accesibilidad, y desactivarlo puede ser contraproducente.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev