Saltar al contenido
display.css · devschool

display, visibility y overflow en CSS

Lección 10 de 25 · 3 min de lectura · Actualizado el

En esta lección
  1. La propiedad display
  2. Ocultar elementos: tres formas distintas
  3. Contenido que no cabe: overflow
  4. Errores típicos

La propiedad display

display decide cómo se comporta una caja en la página. Es probablemente la propiedad más importante de CSS para maquetar.

ValorComportamiento
blockEmpieza en línea nueva y ocupa todo el ancho. Respeta width, height y todos los márgenes
inlineVa en línea con el texto. Ignora width, height y los márgenes verticales
inline-blockVa en línea, pero respeta width, height y márgenes. Ideal para botones
noneEl elemento desaparece por completo
flexConvierte el elemento en un contenedor Flexbox
gridConvierte el elemento en un contenedor Grid

Cada etiqueta HTML tiene un display por defecto (<div> es block, <span> es inline…), pero puedes cambiarlo:

nav a { display: block; padding: 12px; }      /* enlaces que ocupan toda la fila */
.etiqueta { display: inline-block; padding: 2px 8px; border-radius: 4px; }

Ocultar elementos: tres formas distintas

display: nonevisibility: hiddenopacity: 0
¿Se ve?NoNoNo
¿Ocupa su espacio?No: los demás se muevenSí: queda un huecoSí
¿Se puede pulsar?NoNoSí (cuidado)
¿Lo lee un lector de pantalla?NoNoSí
¿Se puede animar?NoNoSí
  • display: none: para ocultar de verdad, como un menú cerrado o una pestaña no activa.
  • visibility: hidden: cuando quieres que no se vea pero que no se mueva nada alrededor.
  • opacity: 0: para animaciones de aparecer y desaparecer. Recuerda que el elemento sigue ahí y se puede pulsar.

El atributo HTML hidden equivale a display: none.

Ocultar solo visualmente

A veces quieres ocultar un texto a la vista pero que los lectores de pantalla sí lo lean, por ejemplo un “Menú” en un botón que solo tiene un icono. Para eso se usa esta clase tan conocida:

.visualmente-oculto {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

Contenido que no cabe: overflow

Si le das a una caja un alto (o ancho) fijo y el contenido no cabe, se desborda. overflow decide qué hacer:

.caja { height: 150px; overflow: auto; }
ValorQué pasa
visibleEl contenido se sale de la caja (por defecto)
hiddenLo que sobra se corta y no se ve
scrollSiempre muestra barras de desplazamiento
autoMuestra barras solo si hacen falta. Casi siempre es la mejor opción

También puedes controlar cada eje: overflow-x: auto; overflow-y: hidden;.

Es muy útil para tablas anchas en el móvil: envuélvelas en un contenedor con overflow-x: auto y podrán desplazarse de lado sin romper la página.

.tabla-contenedor { overflow-x: auto; }

Textos que no caben en una línea

.titulo-tarjeta {
  white-space: nowrap;      /* no partir la línea */
  overflow: hidden;         /* cortar lo que sobra */
  text-overflow: ellipsis;  /* poner "..." al final */
}

Errores típicos

  • Poner width o height a un elemento inline (como un <a> o un <span>) y que no haga nada. Cámbialo a inline-block o block.
  • Usar overflow: hidden para “arreglar” algo que se sale, y cortar sin darte cuenta un menú desplegable o una sombra.
  • Ocultar con opacity: 0 un botón y que siga recibiendo clics invisibles.

Pruébalo tú

Cambia el código y pulsa Ejecutar (o Ctrl + Enter).

display.html
Resultado

Pon a prueba lo que has aprendido

[CSS] ¿Qué diferencia hay entre display: none y visibility: hidden?

[CSS] Pones width: 200px a un <a> y no cambia de tamaño. ¿Por qué?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.