Volver al blog

Corrupción estructural: Inyección de DIVs huérfanos dentro de etiquetas UL o OL

Infografía detallada: Corrupción estructural: Inyección de DIVs huérfanos dentro de etiquetas UL o OL

TL;DR (Too Long; Didn’t Read... o básicamente: mucho texto, dame el resumen rápido)
Las etiquetas <ul> y <ol> solo permiten elementos <li> como hijos directos. Inyectar un <div> o un <p> rompe el cálculo matemático del árbol de accesibilidad, anunciando a la persona usuaria un total incorrecto de elementos.

La fragilidad de la estructura de lista

En el afán de aplicar estilos visuales complejos o dividir la lista en columnas, es común que se introduzcan etiquetas <div> como contenedores intermedios entre la lista y los ítems. Esta práctica viola abiertamente la especificación W3C HTML5 y, consecuentemente, el Criterio WCAG 1.3.1.

El patrón erróneo: Código Accesible Deficiente

En este bloque, el lector de pantalla calculará erróneamente que la lista tiene menos elementos de los reales, omitiendo los ocultos en sub-capas no válidas.

<!-- MAL: Anidamiento ilegal en el DOM -->
<ul class="steps">
  <div class="column-left">
    <li>Paso 1</li>
    <li>Paso 2</li>
  </div>
  <div class="column-right">
    <li>Paso 3</li>
  </div>
</ul>

La Solución Accesible: Código Recomendado

Si requieres dividir en columnas, aplica CSS Grid/Flexbox directamente sobre el contenedor <ul>, garantizando que todos los hijos sean obligatoriamente <li>.

<!-- BIEN: Estructura sintáctica rigurosa -->
<ul class="steps grid-2-cols">
  <li>Paso 1</li>
  <li>Paso 2</li>
  <li>Paso 3</li>
</ul>

Metodología de Verificación y Testing

Pruebas Manuales con Lectores de Pantalla

Con NVDA, presionar L para saltar a la lista. Si contiene divs intermedios, NVDA puede anunciar un conteo incorrecto de elementos (ej: "Lista con 1 elemento" cuando hay 3). Con la estructura válida, anunciará "Lista con 3 elementos".

Inspección del Árbol de Accesibilidad

En Chrome DevTools, inspeccionar la estructura del DOM y verificar que todos los hijos directos de <ul>/<ol> sean exclusivamente <li>. El Accessibility Tree mostrará nodos con rol listitem huérfanos si hay contenedores intermedios no válidos.

Herramientas Automatizadas

El validador HTML del W3C (validator.w3.org) reporta directamente violaciones del modelo de contenido. Axe DevTools: la regla list verifica que <ul>/<ol> solo contengan hijos <li>, <script> o <template>.

Compartir artículo:

Artículos relacionados

¿Necesitas ayuda con la accesibilidad de tus proyectos?

Descubre cómo nuestro ecosistema detecta y corrige las barreras de forma automática.

Hablar con un experto (Abre en una nueva ventana)