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
hidden
es 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
hidden
es 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.