0Pricing
HTML Academy · Lección

El atributo hidden

Alterne la visibilidad de los elementos mediante el atributo booleano hidden.

El atributo hidden es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué es hidden?

El atributo hidden hace que un elemento sea invisible y lo elimina del árbol de accesibilidad:

<p hidden>This paragraph is hidden.</p>
<!-- Equivalent to: display: none in CSS -->
<!-- The element is in the DOM but not rendered -->
<!-- Screen readers do not announce hidden elements -->

hidden es un atributo booleano

Los atributos booleanos están presentes (true) o ausentes (false); no necesitan ningún valor:

<!-- All of these are equivalent: -->
<div hidden>Content</div>
<div hidden="">Content</div>
<div hidden="hidden">Content</div>

<!-- Remove with JavaScript: -->
element.removeAttribute('hidden');

<!-- Or set: -->
element.setAttribute('hidden', '');

hidden frente a display:none y visibility:hidden

Hay tres formas de ocultar elementos:

/* hidden attribute = display:none */
/* Element is removed from flow, invisible to AT */

/* visibility: hidden */
/* Element occupies space but is invisible */
/* Still read by some screen readers */

/* opacity: 0 */
/* Element occupies space, invisible, still interactive */
/* Still read by screen readers */

/* Hidden attribute is the simplest for fully hiding content */

Alternar la visibilidad con JavaScript

Controle la visibilidad añadiendo o eliminando el atributo hidden:

const modal = document.getElementById('modal');

// Show:
modal.removeAttribute('hidden');
// or:
modal.hidden = false;

// Hide:
modal.setAttribute('hidden', '');
// or:
modal.hidden = true;

// Toggle:
modal.toggleAttribute('hidden');

CSS puede sobrescribir hidden

La propiedad display de CSS puede sobrescribir el atributo hidden; tenga cuidado:

/* This makes hidden elements visible again: */
[hidden] {
  display: block !important;
}

/* Do not do this unless you have a very specific reason */

/* The hidden attribute should be trusted as the source of truth for visibility */

hidden frente a aria-hidden

Hay dos tipos diferentes de ocultación:

  • hidden: se oculta visualmente Y se elimina del árbol de accesibilidad
  • aria-hidden="true": solo se oculta del árbol de accesibilidad, pero sigue renderizándose visualmente
<!-- hidden: nothing sees it -->
<div hidden>Completely hidden</div>

<!-- aria-hidden: visual users see it, screen readers skip it -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>

Patrón de mostrar y ocultar

Alternancia clásica para mostrar y ocultar con hidden:

<button
  aria-expanded="false"
  aria-controls="menu"
  id="menu-btn"
>Menu</button>

<ul id="menu" hidden>
  <li><a href="/">Home</a></li>
  <li><a href="/about">About</a></li>
</ul>

<script>
document.getElementById('menu-btn').addEventListener('click', function() {
  const menu = document.getElementById('menu');
  const expanded = this.getAttribute('aria-expanded') === 'true';
  menu.hidden = expanded;
  this.setAttribute('aria-expanded', !expanded);
});
</script>

Valor until-found (nuevo)

HTML 5.1+ introdujo hidden="until-found" para el contenido que se puede buscar, pero aparece contraído:

<details>
  <summary>Read More</summary>
  <div hidden="until-found" id="more-content">
    <p>This content is collapsed but findable by Ctrl+F.</p>
  </div>
</details>
<!-- hidden="until-found" hides visually but allows browser Ctrl+F to find and reveal it -->
<!-- Only supported in Chromium-based browsers currently -->

Comportamiento de los lectores de pantalla

El atributo hidden oculta completamente el contenido para las tecnologías de asistencia:

  • Los lectores de pantalla omiten los elementos ocultos
  • El foco mediante Tab no entra en los elementos ocultos
  • Esto es correcto para diálogos modales, menús fuera del lienzo y paneles condicionales que no deben recorrerse mientras están ocultos

Casos de uso habituales

Cuándo utilizar el atributo hidden:

  • Diálogos modales antes de abrirlos
  • Contenido de paneles de pestañas (muestre el panel de la pestaña activa y oculte los demás)
  • Asistentes basados en pasos (muestre el paso actual)
  • Divulgación progresiva (muestre más información al hacer clic)
  • Estados de carga (reemplace el indicador de carga por el contenido)

Conservar el estado de ocultación

Utilice localStorage para recordar el estado de visibilidad entre cargas de página:

const panel = document.getElementById('info-panel');
const key = 'info-panel-visible';

// Restore state:
if (localStorage.getItem(key) === 'false') {
  panel.hidden = true;
}

// On toggle:
document.getElementById('toggle-btn').addEventListener('click', () => {
  panel.hidden = !panel.hidden;
  localStorage.setItem(key, !panel.hidden);
});

Comprobación rápida

¿Cuál es la diferencia entre el atributo hidden y aria-hidden?

Resumen: atributo hidden

Aspectos esenciales del atributo hidden:

  • hidden: equivalente a display: none
  • Booleano: presente = oculto, ausente = visible
  • Se elimina del árbol de accesibilidad (a diferencia de visibility: hidden)
  • Alternarlo con element.hidden = true/false
  • aria-hidden="true" oculta el contenido solo para las tecnologías de asistencia y mantiene la representación visual

Preguntas frecuentes

¿La lección «El atributo hidden» es gratis?

Sí — el texto completo de «El atributo hidden» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El atributo hidden»?

Alterne la visibilidad de los elementos mediante el atributo booleano hidden. Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar HTML Academy?

No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «El atributo hidden»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de HTML Academy?

Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. id, class, style y title
  2. El atributo hidden
  3. tabindex y accesskey
  4. Atributos de datos personalizados data-*
← Volver a HTML Academy