Haz accesible el contenido de los pseudo-elementos ::marker en CSS

En mi post anterior sobre acordeones nativos en HTML vimos cómo usar <details> y <summary> para crear interacciones sin nada de JavaScript.

Pues bien, hace poco me puse a experimentar con ::marker para personalizar los iconos que aparecen en <summary>… y descubrí un detalle importante de accesibilidad:

👉 Algunos lectores de pantalla también leen el content que añadimos desde CSS.

El problema: screen readers y el pseudo-elemento ::marker

Imagina que añades un emoji como marcador:

summary::marker {
  content: "😊";
}

A nivel visual, queda simpático. Pero en un lector de pantalla el resultado puede ser algo así:

Cara sonriente con los ojos sonrientes y las mejillas coloradas

En lugar de un simple “Galería de fotos”, el usuario recibe una descripción larga y confusa del emoji. No es la experiencia que queremos.

La solución: texto alternativo para screen readers

La buena noticia es que CSS permite añadir un segundo valor pensado justamente para los lectores de pantalla:

/* Con texto alternativo personalizado */
summary::marker {
  content: "📸" / "Ver fotos";
}

/* O directamente omitirlo para screen readers */
summary::marker {
  content: "📸" / "";
}

El segundo valor puede dejarse vacío, lo que instruye al lector de pantalla a ignorar por completo el marcador. De esta forma consigues personalización visual sin romper la accesibilidad. ✅

Ejemplo completo

Veamos un ejemplo práctico con HTML y CSS:

<details>
  <summary>Galería de fotos</summary>
  <p>Aquí irían las fotos...</p>
</details>
summary::marker {
  content: "📸" / "Ver";
}

Resultado visual: 📸 Galería de fotos
Lo que lee el screen reader: “Ver Galería de fotos”

De esta forma puedes decorar visualmente el summary sin añadir ruido innecesario a usuarios de tecnologías asistivas.

Compatibilidad de navegadores

La sintaxis con texto alternativo (content: “icono” / “texto”;) todavía no tiene un soporte uniforme en todos los entornos.

Traducido para la gen Z: úsalo para decoración, pero no confíes en ::marker como única fuente de información importante.

Casos de uso comunes

Conclusión

Un detalle minúsculo, pero que marca la diferencia entre un acordeón bonito y uno realmente inclusivo. Así que ya sabes: si juegas con ::marker, no olvides también jugar con la accesibilidad.

ℹ️ Extra: lectores de pantalla en Windows

NVDA (NonVisual Desktop Access) → Lector de pantalla gratuito y open source, muy popular en Windows. Lo usan tanto personas con discapacidad visual como desarrolladores para testear accesibilidad.

JAWS (Job Access With Speech) → Lector de pantalla comercial (de pago, bastante caro). Es muy potente y está muy extendido en entornos corporativos.


Comparte


Artículos relacionados

Acordeones nativos en HTML sin una línea de JavaScript

Aprende a crear acordeones accesibles y funcionales utilizando solo HTML, sin necesidad de JavaScript

Leer artículo