Ocultar un elemento con CSS: 5 formas (con código)

Hay varias formas de ocultar un elemento con CSS, y no son intercambiables: cada una se comporta distinto con el espacio, los clics y el lector de pantalla. Te dejo las 5 con su código y, lo más importante, cuándo usar cada una para no meter la pata en accesibilidad.

1. display: none (oculta y quita el hueco)

La más común. El elemento desaparece por completo: no se ve y no ocupa espacio. Ojo: también deja de existir para el lector de pantalla.

.oculto {
  display: none;
}

Úsalo cuando: quieres que el elemento no exista para nadie, por ejemplo en menús desplegables o pestañas inactivas.

2. visibility: hidden (oculta pero deja el hueco)

El elemento se vuelve invisible pero sigue ocupando su espacio. La maquetación no se mueve.

.invisible {
  visibility: hidden;
}

Úsalo cuando: quieres esconder algo sin que el resto del diseño dé un salto.

3. opacity: 0 (transparente, pero ahí sigue)

Lo hace transparente. Sigue ocupando espacio y sigue siendo clicable. Su ventaja es que se puede animar con una transición.

.desvanecer {
  opacity: 0;
  transition: opacity .3s ease;
}

Úsalo cuando: quieres una aparición o desaparición suave (fade in / fade out).

4. El atributo hidden (HTML)

No es CSS puro, pero es lo más legible: añades hidden al elemento y equivale a display:none.

<div hidden>No se ve</div>

/* Y desde CSS puedes forzar su comportamiento */
[hidden] { display: none; }

Úsalo cuando: controlas la visibilidad desde el HTML o con JavaScript de forma sencilla.

5. Ocultar solo visualmente (accesible)

A veces quieres esconder algo a la vista pero que el lector de pantalla siga leyéndolo (por ejemplo, una etiqueta para accesibilidad). Para eso está la clase «visually-hidden»:

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

Úsalo cuando: das contexto a la tecnología de apoyo sin mostrarlo en pantalla. Nunca uses display:none para esto.

Cuál elegir, de un vistazo

Método¿Ocupa espacio?¿Accesible?
display: noneNoNo
visibility: hiddenNo
opacity: 0Sí (y clicable)
atributo hiddenNoNo
.visually-hiddenNo

Más CSS en el blog

Preguntas frecuentes

¿Diferencia entre display:none y visibility:hidden?

display:none quita el elemento del flujo (no ocupa espacio); visibility:hidden lo oculta pero deja su hueco.

¿Cómo lo oculto sin que desaparezca para el lector de pantalla?

Con la clase «visually-hidden»: lo saca de la vista pero lo mantiene accesible. No uses display:none para eso.

¿opacity:0 oculta de verdad?

Visualmente sí, pero sigue ocupando espacio y sigue siendo clicable. Es ideal para transiciones, no para ocultar del todo.

Regla rápida: si no debe existir para nadie, display:none; si es por accesibilidad, visually-hidden. Copia el código y pruébalo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio