Menu

Subrayado en CSS: text-decoration, color y cómo quitarlo

Subraya texto con text-decoration y luego controla la línea: su color, estilo, grosor y distancia al texto. También cómo quitar el subrayado de los enlaces, y cuándo no deberías hacerlo.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

Cómo subrayar texto en CSS

text-decoration: underline dibuja una línea debajo del texto. La línea toma el color del texto salvo que le des uno.

La segunda línea usa la abreviatura text-decoration para el tipo de línea, el estilo y el color, y después define el grosor y la separación con sus propias propiedades. La especificación también permite el grosor dentro de la abreviatura, pero Safari descarta toda la declaración cuando lo incluyes, así que escribe text-decoration-thickness por separado.

Las propiedades de text-decoration

PropiedadValoresPor defecto
text-decoration-lineunderline, overline, line-through, none (se pueden combinar)none
text-decoration-stylesolid, double, dotted, dashed, wavysolid
text-decoration-colorCualquier colorcurrentColor (el color del texto)
text-decoration-thicknessUna longitud, un porcentaje, auto, from-fontauto
text-underline-offsetUna longitud, un porcentaje, autoauto

text-decoration es la abreviatura de las cuatro primeras, pero deja el grosor fuera: Safari ignora una declaración text-decoration que lo contiene. text-underline-offset es aparte y hay que escribirla sola.

Estilos, colores y grosor

Mover el subrayado: text-underline-offset

Por defecto la línea queda cerca de las letras y rodea los trazos descendentes como los de la g, la p y la y. text-underline-offset la baja más, lo que suele verse más limpio en títulos y enlaces:

Los huecos alrededor de los trazos descendentes vienen de text-decoration-skip-ink: auto, que está activado por defecto. Ponlo en none para una línea continua.

Quitar el subrayado de los enlaces

La hoja de estilo del navegador subraya los enlaces. text-decoration: none lo quita. Como muchos lectores encuentran los enlaces por su subrayado, recupéralo en hover y con el foco del teclado, y dale al enlace un color distinto al del texto:

Las barras de navegación y los botones son un lugar razonable para quitar el subrayado, porque su posición ya dice "enlace". Dentro de un párrafo de texto, mantenlo. Hay más sobre los estados de los enlaces en la página de hover.

Línea superior y tachado

text-decoration-line también dibuja una línea encima del texto o a través de él, y acepta más de un valor:

.old-price { text-decoration: line-through; }
.both      { text-decoration-line: underline overline; }

El tachado con CSS es solo visual. Cuando el texto es contenido eliminado (un precio que cambió, un artículo quitado), márcalo con <s> o <del>, como muestra la página de subrayado en HTML, para que el significado esté en el marcado y no solo en el estilo.

Errores comunes

  • Usar <u> para subrayar por estilo. <u> es para texto marcado como distinto, como las faltas de ortografía. Para un subrayado con estilo, usa CSS.
  • Subrayar texto que no es un enlace. Los lectores intentarán hacer clic. Para enfatizar, usa negrita, color o un fondo.
  • Quitar el subrayado de los enlaces en el texto del cuerpo sin otra pista. El color solo no basta para los lectores que no ven la diferencia.
  • Intentar quitar el subrayado de un padre desde un hijo. No se puede deshacer desde dentro; cambia el padre o haz que el hijo sea inline-block.
  • Esperar text-underline-offset en la abreviatura. Es una propiedad aparte.
  • Poner el grosor en la abreviatura. text-decoration: underline 2px funciona en Chrome y Firefox, pero Safari descarta toda la declaración. Usa text-decoration-thickness.

Preguntas frecuentes

¿Cómo subrayo texto en CSS?

Usa text-decoration: underline; en el elemento. Para el aspecto de la línea, agrega text-decoration-color, text-decoration-style, text-decoration-thickness y text-underline-offset.

¿Cómo quito el subrayado de un enlace?

Define text-decoration: none; en el elemento a. Asegúrate de que los enlaces sigan destacando de otra forma (color más un subrayado en hover o foco), porque muchos lectores dependen del subrayado para encontrar los enlaces.

¿Cómo cambio el color del subrayado?

Usa text-decoration-color, o la abreviatura: text-decoration: underline #f59e0b;. Sin él, la línea usa el color del texto.

¿Cómo agrego espacio entre el texto y el subrayado?

Usa text-underline-offset, por ejemplo text-underline-offset: 4px;. Los valores más grandes alejan la línea hacia abajo del texto.

¿Por qué no puedo quitar el subrayado de un elemento hijo?

Un subrayado que dibuja un padre se pinta por encima de sus hijos y no se puede quitar desde dentro de ellos. Quítalo en el elemento que lo define, o haz que el hijo sea display: inline-block, al que no llega la decoración del padre.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR