W3docs

Propiedad CSS outline-offset

La propiedad CSS outline-offset define el espacio entre el contorno y el borde de un elemento. Consulta valores y ejemplos.

La propiedad outline-offset especifica la cantidad de espacio entre el contorno de un elemento y el borde del mismo. El espacio añadido por outline-offset siempre es transparente, por lo que el fondo de la página (o lo que haya detrás del elemento) se muestra a través del hueco.

Esta página explica qué hace outline-offset, cómo se comportan los valores positivos y negativos, cuándo conviene usarlo y las consideraciones que debes tener en cuenta.

Diferencias entre contornos y bordes

outline-offset solo tiene sentido una vez que entiendes cómo se comportan los contornos, ya que funcionan de manera muy diferente a los bordes:

  • Un contorno se dibuja fuera del borde del elemento — por defecto queda pegado al borde.
  • Un contorno no ocupa espacio en el diseño, por lo que añadirlo o desplazarlo nunca mueve los elementos adyacentes.
  • Un contorno puede ser no rectangular (por ejemplo, rodea cada línea de un elemento en línea de varias líneas).

Dado que un contorno no afecta al diseño, outline-offset es una forma segura de alejar el contorno del elemento (o acercarlo) sin que la página se recomponga. Esta propiedad es una de las propiedades CSS3.

No forma parte de la propiedad abreviada outline. A diferencia de outline-style, outline-color y outline-width, outline-offset debe declararse siempre de forma independiente.

Valor inicial0
Se aplica aTodos los elementos.
HeredableNo.
AnimableSí. El ancho del espacio es animable.
VersiónCSS3
Sintaxis DOMobject.style.outlineOffset = "20px";

Sintaxis

Sintaxis de CSS outline-offset

outline-offset: length | initial | inherit;

Ejemplo de la propiedad outline-offset:

Ejemplo de código CSS outline-offset

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div.ex1 {
        margin: 20px;
        border: 2px dotted #000;
        background-color: #8ebf42;
        outline: 4px solid #666;
        outline-offset: 10px;
      }
    </style>
  </head>
  <body>
    <h2>Outline-offset property example</h2>
    <div class="ex1">The outline-offset is 10px</div>
  </body>
</html>

Resultado

Lista de valores de CSS outline-offset

En el ejemplo anterior, el espacio entre el contorno y el borde es de 10px, y el fondo de la página se muestra a través de ese hueco transparente.

Valores negativos

outline-offset también acepta longitudes negativas. Un desplazamiento negativo mueve el contorno hacia adentro, de modo que se dibuja sobre el relleno o el contenido del elemento en lugar de rodearlo:

outline-offset: -5px; /* outline moves 5px inside the border edge */

Esto resulta útil cuando se quiere un anillo de foco que quede dentro de un elemento con poco espacio (por ejemplo, un botón pegado al borde de un contenedor) sin que el contorno sea recortado por un ancestro con overflow: hidden. Un desplazamiento negativo mayor que el elemento hace que el contorno colapse y desaparezca.

Cuándo usarlo

  • Anillos de foco con espacio. Combina :focus-visible con un pequeño desplazamiento positivo para que el anillo de foco del teclado no quede demasiado pegado al elemento. Nunca elimines el contorno por completo sin proporcionar un sustituto — es la principal señal visual para los usuarios de teclado.
  • Efectos decorativos de "doble borde" sin añadir un segundo elemento, ya que el hueco del desplazamiento deja ver el fondo.
  • Evitar anillos recortados dentro de contenedores con desplazamiento, usando un pequeño desplazamiento negativo.

Valores

ValorDescripción
lengthEspacio entre el contorno y el borde del elemento. Puede ser negativo para dibujar el contorno dentro del borde. El valor por defecto es 0.
initialEstablece la propiedad en su valor predeterminado.
inheritHereda la propiedad de su elemento padre.

Aspectos a tener en cuenta

  • outline-offset no se hereda — los elementos hijo no lo adquieren automáticamente.
  • Los porcentajes no están permitidos; solo funcionan las unidades de length (px, em, rem, etc.).
  • El desplazamiento solo se renderiza cuando hay un contorno visible, es decir, cuando outline-style no es none y el ancho es mayor que cero.
  • El hueco es transparente — outline-offset no puede tener un color propio.

Práctica

Práctica
¿Qué se puede afirmar sobre la propiedad CSS outline-offset según la información proporcionada en la URL indicada?
¿Qué se puede afirmar sobre la propiedad CSS outline-offset según la información proporcionada en la URL indicada?
Was this page helpful?