Diferencia entre revisiones de «Principio 2/2.4 Navegable/2.4.3-B»
De WCAG Wiki
< Principio 2 | 2.4 Navegable
Sin resumen de edición |
Sin resumen de edición |
||
| Línea 1: | Línea 1: | ||
== | {{CriterioWCAG | ||
|id_wcag_criterio=2.4.3 | |||
|id_wcag_subcriterio=2.4.3-B | |||
|wcag_titulo_criterio=2.4.3-B. Contenido dinámico y orden del foco | |||
|wcag_nivel=A | |||
|wcag_version=2.1 | |||
|wcag_principio=2_Operable | |||
|wcag_principio_url=Principio_2 | |||
< | |wcag_pauta=2.4_Navegacion_clara | ||
|wcag_pauta_url=Principio_2/2.4_Navegacion_clara | |||
|wcag_grupo=Navegación | |||
|wcag_subgrupo=Teclado_y_contenido | |||
|wcag_subcriterio_url=Principio_2/2.4_Navegacion_clara/2.4.3-B | |||
|wcag_discapacidades= | |||
<li class="discapacidad-item"> | |||
[[Archivo:Motriz.png|20px|class=icon-discapacidad|alt=Discapacidad motriz]] | |||
<span class="discapacidad-texto">[[:Categoría:Discapacidad motriz|Motriz]]</span> – | |||
<span class="gravedad gravedad-grave">Barrera grave</span> | |||
</li> | |||
<li class="discapacidad-item"> | |||
[[Archivo:Sinvision.png|20px|class=icon-discapacidad|alt=Discapacidad visual total]] | |||
<span class="discapacidad-texto">[[:Categoría:Discapacidad visual total|Visual total]]</span> – | |||
<span class="gravedad gravedad-grave">Barrera grave</span> | |||
</li> | |||
<li class="discapacidad-item"> | |||
</ | [[Archivo:Bajavision.png|20px|class=icon-discapacidad|alt=Baja visión]] | ||
</ | <span class="discapacidad-texto">[[:Categoría:Discapacidad baja visión|Baja visión]]</span> – | ||
<span class="gravedad gravedad-moderada">Barrera moderada</span> | |||
</li> | |||
<li class="discapacidad-item"> | |||
[[Archivo:Cognitiva.png|20px|class=icon-discapacidad|alt=Discapacidad cognitiva]] | |||
<span class="discapacidad-texto">[[:Categoría:Discapacidad cognitiva|Cognitiva]]</span> – | |||
<span class="gravedad gravedad-grave">Barrera grave</span> | |||
</li> | |||
<li class="discapacidad-item"> | |||
[[Archivo:Auditiva.png|20px|class=icon-discapacidad|alt=Discapacidad auditiva]] | |||
<span class="discapacidad-texto">[[:Categoría:Discapacidad auditiva|Auditiva]]</span> – | |||
<span class="gravedad gravedad-leve">Barrera leve</span> | |||
</li> | |||
|wcag_lista_discapacidades= | |||
[[Categoría:Discapacidad motriz]] | |||
[[Categoría:Discapacidad visual total]] | |||
[[Categoría:Discapacidad baja visión]] | |||
[[Categoría:Discapacidad cognitiva]] | |||
[[Categoría:Discapacidad auditiva]] | |||
|wcag_texto_criterioOAW= | |||
Si el contenido de una página se modifica dinámicamente, se debe garantizar que el orden del foco continúa siendo lógico y que no se tabula por elementos ocultos o no operables. | |||
|wcag_descripcion_resumida= | |||
Cuando el contenido aparece, desaparece o cambia mediante scripts, el orden de tabulación se debe mantener lógico y el foco debe moverse al contenido visible y relevante. | |||
|wcag_objetivo= | |||
Asegurar que los usuarios que navegan con teclado y tecnologías de apoyo puedan mantener el contexto cuando el contenido cambia dinámicamente. | |||
|wcag_importancia= | |||
Si el foco se mueve a elementos ocultos o deja zonas accesibles, los usuarios pueden perder orientación, no completar tareas o quedar atrapados fuera del flujo correcto de interacción. | |||
|wcag_referencias= | |||
<ul> | |||
<li><span lang="en">[https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html Understanding Success Criterion 2.4.3: Focus Order]</span></li> | |||
<li>[https://www.w3.org/TR/wai-aria-practices/#kbd_general ARIA Authoring Practices — Keyboard Interaction]</li> | |||
<li>[https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-hidden MDN — aria-hidden]</li> | |||
</ul> | |||
|wcag_recursos= | |||
<ul> | |||
<li>W3C ARIA Practices — gestión del foco</li> | |||
<li>Axe DevTools</li> | |||
<li>Accessibility Insights</li> | |||
<li>Guías de foco para React, Vue, Angular</li> | |||
</ul> | |||
|wcag_tipo_evaluacion=Manual | |||
|wcag_pasos_evaluacion= | |||
<ol class="paso-list"> | |||
<li>Identificar componentes dinámicos (modales, menús, tabs, sliders, alertas).</li> | |||
<li>Navegar con teclado y comprobar orden lógico tras la interacción.</li> | |||
<li>Verificar que el foco no llega a elementos ocultos o fuera de contexto.</li> | |||
<li>Comprobar uso correcto de <code>aria-hidden</code> y <code>tabindex</code> para ocultar elementos no visibles.</li> | |||
<li>En elementos emergentes, asegurar que el foco se confina al componente y regresa al origen al cerrarse.</li> | |||
</ol> | |||
|wcag_resultado_evaluacion= | |||
El foco permanece en contenido visible, sigue orden lógico y respeta la interacción dinámica sin exponer elementos ocultos. | |||
|wcag_ejemplo_evaluacion= | |||
<div class="accessibility-card"> | |||
<strong>✅ Correcto: menú con foco gestionado</strong> | |||
<pre class="wcag-codigo-html"> | |||
<button id="openMenu">Menú</button> | |||
<nav id="menu" hidden aria-hidden="true"> | |||
<a href="#a">Opción A</a> | |||
<a href="#b">Opción B</a> | |||
</nav> | |||
<script> | |||
const btn = document.getElementById('openMenu'); | |||
const menu = document.getElementById('menu'); | |||
btn.addEventListener('click', () => { | |||
menu.hidden = false; | |||
menu.setAttribute('aria-hidden','false'); | |||
menu.querySelector('a').focus(); | |||
}); | |||
</script> | |||
</pre> | |||
</div> | |||
<div class="accessibility-card"> | |||
<strong>❌ Incorrecto: elementos ocultos tabulables</strong> | |||
<pre class="wcag-codigo-html"> | |||
<div style="display:none;"> | |||
<a href="#oculto">Entrada oculta</a> | |||
</div> | |||
</pre> | |||
</div> | |||
|wcag_otras_herramientas_evaluacion= | |||
<ul> | |||
<li>Pruebas manuales con teclado</li> | |||
<li>Axe DevTools, Accessibility Insights</li> | |||
<li>NVDA, JAWS, VoiceOver</li> | |||
<li>Inspección DOM para elementos ocultos accesibles</li> | |||
</ul> | |||
}} | |||
Revisión del 11:49 5 nov 2025
2.4.3-B. Contenido dinámico y orden del foco
- Nivel: A
- Versión: 2.1
- Principio: 2_Operable
- Pauta: 2.4_Navegacion_clara
- Grupo: Navegación
- Subgrupo: Teclado_y_contenido
Discapacidades afectadas
Este criterio puede afectar a distintas personas con discapacidad. A continuación se indican las más relevantes.
-
Motriz –
Barrera grave
-
Visual total –
Barrera grave
-
Baja visión –
Barrera moderada
-
Cognitiva –
Barrera grave
-
Auditiva –
Barrera leve
Enunciado del criterio (Observatorio de Accesibilidad Web)
- Si el contenido de una página se modifica dinámicamente, se debe garantizar que el orden del foco continúa siendo lógico y que no se tabula por elementos ocultos o no operables.
Comprensión del criterio
Descripción resumida
Cuando el contenido aparece, desaparece o cambia mediante scripts, el orden de tabulación se debe mantener lógico y el foco debe moverse al contenido visible y relevante.
Objetivo
Asegurar que los usuarios que navegan con teclado y tecnologías de apoyo puedan mantener el contexto cuando el contenido cambia dinámicamente.
Importancia de cumplir el criterio
Si el foco se mueve a elementos ocultos o deja zonas accesibles, los usuarios pueden perder orientación, no completar tareas o quedar atrapados fuera del flujo correcto de interacción.
Referencias WCAG
Recursos de apoyo
- W3C ARIA Practices — gestión del foco
- Axe DevTools
- Accessibility Insights
- Guías de foco para React, Vue, Angular
Evaluación del criterio
Tipo de evaluación
Evaluación Manual
Procedimiento de evaluación
- Identificar componentes dinámicos (modales, menús, tabs, sliders, alertas).
- Navegar con teclado y comprobar orden lógico tras la interacción.
- Verificar que el foco no llega a elementos ocultos o fuera de contexto.
- Comprobar uso correcto de
aria-hiddenytabindexpara ocultar elementos no visibles. - En elementos emergentes, asegurar que el foco se confina al componente y regresa al origen al cerrarse.
Resultado esperado
El foco permanece en contenido visible, sigue orden lógico y respeta la interacción dinámica sin exponer elementos ocultos.
Ejemplo
✅ Correcto: menú con foco gestionado
<button id="openMenu">Menú</button>
<nav id="menu" hidden aria-hidden="true">
<a href="#a">Opción A</a>
<a href="#b">Opción B</a>
</nav>
<script>
const btn = document.getElementById('openMenu');
const menu = document.getElementById('menu');
btn.addEventListener('click', () => {
menu.hidden = false;
menu.setAttribute('aria-hidden','false');
menu.querySelector('a').focus();
});
</script>
❌ Incorrecto: elementos ocultos tabulables
<div style="display:none;"> <a href="#oculto">Entrada oculta</a> </div>
Otras herramientas de evaluación
- Pruebas manuales con teclado
- Axe DevTools, Accessibility Insights
- NVDA, JAWS, VoiceOver
- Inspección DOM para elementos ocultos accesibles
Ejemplos accesibles y no accesibles creados por alumnos
Comentarios
A continuación se muestran comentarios sobre el criterio 2.4.3-B. Contenido dinámico y orden del foco
Loading comments...
