¿Qué es el atributo hidden?

El atributo hidden en HTML oculta elementos no relevantes. Aprende cómo funciona, su impacto en accesibilidad y cómo manipularlo con JavaScript.

LucusHost, el mejor hosting

El atributo hidden es un atributo global booleano en HTML. Su función principal es indicar que un elemento no es relevante en el contexto actual de la página y, por lo tanto, los navegadores no deben mostrarlo al usuario.

¿Cómo funciona el atributo hidden?

  • Visualmente: Cuando un elemento tiene el atributo hidden, los navegadores no lo renderizan. Es decir, el elemento no se muestra en la página y no ocupa espacio en el diseño. Su efecto visual es muy similar a aplicar la propiedad CSS display: none;.
  • Accesibilidad: De forma importante, el contenido marcado con el atributo hidden también se oculta a las tecnologías de asistencia, como los lectores de pantalla. El elemento y su contenido se eliminan del árbol de accesibilidad, lo que significa que no serán anunciados ni estarán disponibles para la interacción a través de estas herramientas. Esto refuerza la idea de que el contenido es actualmente irrelevante.
  • Interactividad: Un elemento con hidden no puede recibir el foco del teclado (por ejemplo, mediante la tecla Tab) y su contenido no es interactivo (no se puede hacer clic en enlaces o botones dentro de él).

Al ser un atributo booleano, su simple presencia en la etiqueta activa su comportamiento. Por ejemplo, <div hidden> es la forma estándar de usarlo. Escribir hidden="hidden" o hidden="" también es válido y tiene el mismo efecto. Para que el elemento vuelva a ser visible, se debe eliminar el atributo hidden (o establecer su propiedad hidden en false mediante JavaScript).

¿Cuándo se utiliza el atributo hidden?

El atributo hidden es útil en diversas situaciones:

  1. Contenido condicional o que se revela dinámicamente: Para ocultar elementos que solo deben mostrarse bajo ciertas condiciones, tras una acción del usuario (como hacer clic en un botón), o cuando una aplicación de página única (SPA) cambia de vista.
  2. Elementos temporalmente irrelevantes: Si un elemento de la página ha dejado de ser pertinente para el estado actual de la interfaz o del flujo de información.
  3. Declarar contenido que aún no está listo: Por ejemplo, un panel que se llenará con datos más tarde mediante JavaScript.
  4. Implementar interfaces de usuario como pestañas o acordeones: Donde solo un panel de contenido es visible a la vez. (Aunque para acordeones simples, <details> y <summary> son más semánticos).

Ejemplo de uso y manipulación con JavaScript:

<!DOCTYPE <strong>html</strong>>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Uso del Atributo Hidden</title>
    <style>
        .panel-oculto {
            border: 1px solid #ccc;
            padding: 15px;
            margin-top: 10px;
            background-color: #f9f9f9;
        }
    </style>
</head>
<body>
    <button id="toggleBoton">Mostrar/Ocultar Panel</button>

    <div id="miPanel" class="panel-oculto" hidden>
        <h2>Información Adicional</h2>
        <p>Este contenido estaba inicialmente oculto usando el atributo 'hidden'.</p>
        <p>Ahora puedes verlo porque hemos interactuado con el botón.</p>
    </div>

    <script>
        const boton = document.getElementById('toggleBoton');
        const panel = document.getElementById('miPanel');

        boton.addEventListener('click', function() {
            // Alterna el estado de 'hidden' del panel
            panel.hidden = !panel.hidden; 
        });
    </script>
</body>
</html>
Lenguaje del código: PHP (php)

En este ejemplo, el div con id="miPanel" está oculto al cargar la página. Al hacer clic en el botón, JavaScript cambia el valor de la propiedad hidden del panel, lo que hace que se muestre u oculte.

Diferencia con CSS (display: none; o visibility: hidden;)

Aunque el resultado visual de hidden es similar a display: none;, la principal diferencia es semántica:

  • hidden: Indica que el elemento es semánticamente irrelevante en el estado actual. Es una declaración sobre la pertinencia del contenido.
  • display: none;: Es una directiva puramente presentacional que oculta un elemento sin implicar nada sobre su relevancia semántica.
  • visibility: hidden;: Oculta el elemento, pero este sigue ocupando su espacio en el diseño, a diferencia de hidden y display: none;.

Si bien es posible que una regla CSS con alta especificidad (por ejemplo, display: block !important;) anule el efecto del atributo hidden y haga visible el elemento, esto generalmente se considera una mala práctica, ya que contradice la intención semántica de hidden.

En conclusión, hidden es la forma preferida en HTML para controlar la visibilidad de los elementos basándose en su relevancia actual, asegurando que tanto la presentación visual como la accesibilidad reflejen ese estado.

¿Tienes alguna duda o pregunta?Envía el formulario y procuraré darle respuesta
Formulario de pregunta
Responsable » Jose Ramón Bernabeu Guillem. Finalidad » Ponernos en contacto. Legitimación » Tu consentimiento al marcar la casilla verificación. Destinatarios » Los datos que proporciones estarán ubicados en los servidores de LucusHost, proveedor de hosting de este sitio. Derechos » por supuesto tendrás derecho, entre otros, a acceder, rectificar, limitar y suprimir tus datos.
Si creees que esto puede ser de utilidad a alguien más, pues... compártelo que es gratis 🙂
Sitio alojado en un servidor verde según The Green Web Foundation

LucusHost, el mejor hosting

Aviso legal | Condiciones de contratación | Política de privacidad | Política de cookies
© 2017-2025 · Jose R. Bernabeu ·
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram