hidden? Una puerta que oculta y protegeImagina que tienes una habitación con una cortina opaca: desde fuera, nada de lo que hay detrás se ve ni se intuye. Así funciona el atributo hidden en HTML: cuando se lo aplicas a un elemento, ese contenido queda completamente fuera de la vista para los usuarios y también para casi todas las tecnologías de asistencia como lectores de pantalla. Sin embargo, la "habitación" sigue estando ahí: el elemento permanece presente en el DOM de la página y es fácilmente manipulable desde JavaScript.
En palabras sencillas: hidden es una forma directa y semántica de esconder un pedazo de tu web tanto visualmente como para la accesibilidad, pero sin eliminarlo del código.
“Ocultar algo con
hiddenes como usar una cortina espesa y acústica: ni se oye ni se ve lo que hay detrás.”
<div hidden>Texto oculto</div>element.hidden === true), lo que permite mostrarlo u ocultarlo de manera dinámica usando JavaScript.Ocultar elementos innecesarios o redundantes (como ayudas contextuales, menús desplegables no activos o paneles de administración) con hidden mejora la navegación y evita distracción. Asegura además que usuarios con discapacidad no reciban información irrelevante o confundente, optimizando la accesibilidad real.
hidden, aria-hidden, CSS y más: ¿cuándo usar cada técnica?La mayoría de las webs modernas combinan varias técnicas para mostrar u ocultar contenido, pero no todas son iguales ni tienen el mismo efecto sobre la accesibilidad. Para ayudarte a decidir, esta es la tabla comparativa definitiva:
| Técnica/Atributo | ¿Oculta visualmente? | ¿Ocupa espacio? | ¿Oculta a lectores de pantalla? | Uso típico | Error común |
|---|---|---|---|---|---|
| hidden (HTML) | Sí | No | Sí | Paneles, ayudas condicionales | Ocultar info importante accidentalmente |
| aria-hidden="true" | No necesariamente | Puede que sí | Sí | Decorativos, iconos redundantes | Usar sobre controles interactivos |
| display: none (CSS) | Sí | No | Sí | Menús/Popups, acordeones | Ocultar lo que debería ser anunciado |
| visibility: hidden | Sí | Sí | No | Ocultar visualmente sin quitar espacio | Pensar que lo oculta para accesibilidad |
Analogía visual: hidden es la cortina opaca que tapa todo. aria-hidden es como un cristal esmerilado: a veces dejas ver, a veces solo bloqueas el sonido (la accesibilidad). display:none es borrar de la vista y del flujo, pero el DOM lo mantiene. visibility:hidden es que el objeto esté invisible pero que siga ocupando un sitio en la habitación.
Pregunta guía: ¿Tu contenido debería estar completamente ausente tanto para usuarios como para máquinas? Usa
hidden. ¿Solo quieres evitar distracción visual? Usa CSS. ¿Solo debe estar oculto para tecnologías de asistencia? Usaaria-hidden.
<!-- Oculto de inicio -->
<div hidden id="panel-ayuda">Ayuda contextual</div>
<button onclick="document.getElementById('panel-ayuda').hidden = false;">Mostrar ayuda</button>
En Single Page Applications (SPAs) y blogs con editores visuales, hidden permite mostrar u ocultar secciones—como spoilers, formularios multipaso o paneles—sin manipular el DOM ni perder semántica.
hidden o aria-hidden sobre elementos interactivos como botones, enlaces o formularios visibles. Esto los hace invisibles para lectores de pantalla y rompe la navegación por teclado.display:none y aria-hidden lleva a inconsistencias.Consejo 2025: Mantén siempre sincronizada la visibilidad visual y la accesibilidad, especialmente si modificas la interfaz de usuario de forma dinámica.
Una web accesible requiere pruebas activas. Estas son las herramientas más recomendadas:
Recomendaciones:
hidden el contenido para todos? Sí, para usuarios y tecnologías de asistencia. El nodo sigue en el DOM.aria-hidden en vez de hidden? Cuando quieres contenido visible para usuarios, pero que no distraiga a tecnologías de asistencia (ej: iconos decorativos).display:none romper la accesibilidad? Sí, si eliminas información relevante visual y semánticamente.En resumen: El atributo
hiddenes una herramienta potente y semántica para controlar lo que se muestra en la web moderna—pero un buen desarrollador se asegura de no esconder nunca lo que cuenta para la experiencia y la accesibilidad reales.