Cómo subrayar texto en HTML
Hay dos formas: la etiqueta <u> o la propiedad CSS text-decoration: underline. Las dos trazan la misma línea:
El problema de cualquier subrayado es la tercera línea: los lectores esperan que un texto subrayado sea un enlace, y hacen clic en él. Subraya texto normal solo cuando haya un motivo claro.
Qué significa la etiqueta u
<u> no es un botón general de "subrayar". En el HTML actual significa texto con una anotación no articulada: una marca que dice "aquí hay algo especial" sin decir qué. Los usos reales habituales:
- marcar una falta de ortografía (como lo hace un procesador de textos, a menudo con una línea roja ondulada),
- marcar nombres propios en texto chino, que es una convención tipográfica allí.
Para dar énfasis usa <em> o <strong> (consulta negrita), y para títulos de libros usa <cite>. Si solo quieres el aspecto, usa CSS.
Tachado: s y del
HTML tiene dos etiquetas que trazan una línea sobre el texto, y significan cosas distintas:
| Etiqueta | Significado | Uso típico |
|---|---|---|
<s> | Ya no es correcto o relevante, se conserva como contexto | Precio antiguo, tipo de entrada agotado |
<del> | Eliminado del documento | Ediciones, registros de cambios, tareas hechas en una lista de pendientes |
Marcar cambios con ins y del
<ins> es la pareja de <del>: marca texto que se añadió. Los navegadores lo subrayan por defecto. Las dos aceptan datetime (cuándo ocurrió el cambio) y cite (una URL que lo explica):
Este estilo rojo y verde es el aspecto conocido de un diff. text-decoration: none en ins quita el subrayado por defecto para que no parezca un enlace.
Subrayado y tachado con CSS
text-decoration se encarga de la parte visual en cualquier elemento: acepta un color y un estilo, y text-decoration-thickness fija el grosor. Para líneas puramente decorativas es la herramienta correcta:
Quitar el subrayado de los enlaces, la separación del subrayado y los demás detalles de text-decoration están en la página de subrayado en CSS.
Accesibilidad
El soporte de los lectores de pantalla para <s>, <del> e <ins> es irregular: algunos los anuncian como eliminado o insertado, muchos los leen como texto normal, así que quien escucha puede oír "Precio 49 dólares 29 dólares" sin ninguna pista de cuál es el actual. Cuando la diferencia importa, dilo también con palabras, por ejemplo con texto oculto visualmente pero leído en voz alta, o simplemente "Antes 49 ".
Errores comunes
- Subrayar texto que no es un enlace. Los lectores intentarán hacer clic. Para resaltar, usa negrita, color o un fondo.
- Usar
<u>para dar énfasis. Usa<em>o<strong>. - Usar
<strike>. Está obsoleta. Usa<s>,<del>otext-decoration: line-through. - Usar
<s>para contenido eliminado en el historial de un documento. Eso es<del>, que además puede registrar cuándo ocurrió. - Confiar solo en la línea para transmitir el significado. Muchos lectores de pantalla no la anuncian.
Preguntas frecuentes
¿Cómo subrayo texto en HTML?
Envuélvelo en <u>, o aplica text-decoration: underline en el CSS. Usa <u> solo para su significado concreto (como marcar una palabra mal escrita); para un subrayado puramente visual usa CSS en un <span> o en el propio elemento.
¿Cómo tacho texto en HTML?
Usa <s> para texto que ya no es correcto, como un precio antiguo, y <del> para texto que se eliminó en una edición. Las dos trazan una línea sobre el texto. En CSS, text-decoration: line-through hace lo mismo visualmente.
¿La etiqueta <u> está obsoleta?
No. <u> quedó obsoleta en HTML 4 pero volvió en HTML5 con un significado nuevo: texto con una anotación no textual, como un error ortográfico o un nombre propio en un texto chino. Es válida, solo que rara vez es la opción correcta.
¿Qué pasó con la etiqueta <strike>?
<strike> está obsoleta. Los navegadores todavía la muestran tachada, pero no es HTML válido. Usa <s> o <del> según el significado, o text-decoration: line-through.
¿Qué diferencia hay entre <s> y <del>?
<s> marca texto que ya no es relevante o correcto pero se conserva como contexto, como un precio tachado. <del> marca texto que se eliminó del documento, a menudo junto a un <ins> que muestra qué lo reemplazó, y admite los atributos datetime y cite.