Mejores IA: Accesibilidad: errores comunes en 2025
Mejores IA: Accesibilidad: errores comunes en 2025
Las mejores prácticas de accesibilidad web en 2025, enfocadas en los errores más comunes que debes evitar. Guía práctica con ejemplos de código y soluciones inmediatas.
Los 7 errores de accesibilidad más críticos en 2025
1. Falta de texto alternativo descriptivo
Impacto: Alto - Afecta a usuarios con discapacidad visual
El error:
<img src="producto.jpg">
<!-- o -->
<img src="producto.jpg" alt="imagen">
Solución:
<!-- Para imágenes informativas -->
<img src="laptop-dell-xps.jpg"
alt="Laptop Dell XPS 13 con pantalla táctil de 13.3 pulgadas, procesador Intel i7, 16GB RAM, en color plata">
<!-- Para imágenes decorativas -->
<img src="separador.jpg" alt="">
<!-- Para imágenes con texto -->
<img src="logo-empresa.png" alt="TechSolutions - Soluciones tecnológicas innovadoras">
2. Contraste de color insuficiente
Impacto: Alto - Afecta legibilidad para todos los usuarios
Requisitos WCAG 2.1 AA:
- Texto normal: mínimo 4.5:1
- Texto grande (18pt+ o 14pt+ negrita): mínimo 3:1
Solución:
/* ❌ Incorrecto - Ratio: 2.1:1 */
.texto-secundario { color: #AAAAAA; }
/* ✅ Correcto - Ratio: 7.1:1 */
.texto-secundario { color: #333333; }
/* Para texto sobre imágenes */
.overlay-text {
color: #FFFFFF;
background: rgba(0, 0, 0, 0.7);
padding: 8px;
}
3. Formularios sin etiquetas asociadas
Impacto: Crítico - Bloquea completamente el uso de formularios
El error:
<input type="email" placeholder="Email">
<input type="password" placeholder="Contraseña">
Solución:
<div class="form-group">
<label for="email">Correo electrónico</label>
<input
type="email"
id="email"
name="email"
required
aria-required="true">
</div>
<div class="form-group">
<label for="password">Contraseña</label>
<input
type="password"
id="password"
name="password"
required
aria-required="true"
aria-describedby="password-help">
<span id="password-help" class="help-text">
Mínimo 8 caracteres, incluye mayúsculas y números
</span>
</div>
4. Navegación que no funciona con teclado
Impacto: Crítico - Bloquea acceso completo al sitio
El error: Menús desplegables solo con hover, botones sin focus.
Solución:
<!-- Menú accesible -->
<nav aria-label="Navegación principal">
<button
aria-expanded="false"
aria-controls="submenu"
id="menu-toggle">
Productos
</button>
<ul id="submenu" hidden>
<li><a href="/productos/web">Desarrollo Web</a></li>
<li><a href="/productos/mobile">Apps Móviles</a></li>
</ul>
</nav>
<style>
/* Focus visible */
button:focus-visible,
a:focus-visible {
outline: 3px solid #0066cc;
outline-offset: 2px;
}
</style>
5. Falta de jerarquía de encabezados
Impacto: Medio - Dificulta navegación con lectores de pantalla
El error:
<h1>Título</h1>
<h3>Subtítulo</h3> <!-- ❌ Saltó h2 -->
<h2>Otro</h2>
Solución:
<h1>Guía de Accesibilidad Web 2025</h1>
<h2>Introducción</h2>
<h3>¿Qué es la accesibilidad?</h3>
<h3>¿Por qué es importante?</h3>
<h2>Mejores Prácticas</h2>
<h3>Texto alternativo</h3>
<h3>Contraste de color</h3>
6. Información transmitida solo por color
Impacto: Alto - Excluye a usuarios daltónicos
El error: “Los campos en rojo son obligatorios” sin otro indicador.
Solución:
<label for="email">
Correo electrónico
<span class="required" aria-label="requerido">*</span>
</label>
<input
type="email"
id="email"
required
aria-required="true"
class="required-field">
7. Contenido dinámico sin anuncios
Impacto: Medio - Los lectores de pantalla no detectan cambios
El error:
// Mensaje que aparece sin ser anunciado
document.getElementById('mensaje').textContent = 'Guardado correctamente';
Solución:
<div
id="mensaje-exito"
role="alert"
aria-live="polite"
aria-atomic="true"
class="sr-only">
<!-- Se anunciará automáticamente cuando cambie -->
</div>
<script>
function mostrarMensaje(texto) {
const mensaje = document.getElementById('mensaje-exito');
mensaje.textContent = texto;
mensaje.classList.remove('sr-only');
setTimeout(() => {
mensaje.classList.add('sr-only');
}, 5000);
}
</script>
Checklist de implementación
Antes de publicar, verifica:
- ✅ Todas las imágenes tienen
altdescriptivo o vacío - ✅ Contraste de texto cumple WCAG AA (4.5:1 mínimo)
- ✅ Todos los formularios tienen
<label>asociados - ✅ Navegación completa funciona con teclado
- ✅ Encabezados siguen jerarquía lógica
- ✅ Información no depende solo del color
- ✅ Contenido dinámico se anuncia con
aria-live - ✅ Focus visible en todos los elementos interactivos
- ✅ Probado con lector de pantalla (NVDA/JAWS/VoiceOver)
Herramientas de validación
Automáticas:
- Lighthouse - Auditoría completa
- axe DevTools - Detección en tiempo real
- WAVE - Evaluación visual
Manuales:
- Navegación solo con teclado (Tab, Enter, Espacio)
- Lectores de pantalla (NVDA, JAWS, VoiceOver)
- Zoom al 200% para verificar legibilidad
Qué hacer ahora
- Ejecuta una auditoría con Lighthouse y identifica estos 7 errores en tu sitio
- Corrige los 3 más críticos esta semana (texto alternativo, contraste, etiquetas de formularios)
- Mide el impacto con GA4 y Search Console para validar mejoras en engagement, tiempo en sitio y conversiones
¿Te ha gustado este artículo?
Si tienes preguntas o quieres discutir sobre estos temas, no dudes en contactarme.
Contáctame