- Overløb-y kontrol af desbordamiento lodret: recorta, desplaza eller muestra el contenido.
- Auto/scroll/skjult oprettet formatsammenhæng; clip recorta sin permitir desplazamiento.
- Para que surta efecto, definer altura (o blokstørrelse) y combina con overflow-x según convenga.
- Tilgængelig: foco por teclado, tabindex y roller/nombres ARIA apropiados.
Styring af comporta el contenido cuando se sale del contenedor es clave para un diseño web limpio y usable; en ese terreno, overflow-y en CSS manda sobre el desbordamiento vertical, decidiendo si recortar, mostrar barras de desplazamiento o dejar que el contenido se asome fuera del cuadro.
Más allá de lo básico, hay matices que cambian por completo el resultado: ciertos valores aktiveres en ny kontekst for formateo, algunos permiten desplazamiento con JavaScript y otros lo bloquean, y hasta hay efectos colaterales que pueden provocar que un contenedor pase a ser "scrollable" and ambos ejes si no se configura bien.
¿Qué es overflow-y y para qué sirve?
Ejendommen overløbs-y indica al navegador qué hacer con el contenido que rebasa el elemento por su grænse overlegen og underlegen. Cuando un bloque tiene más contenido del que cabe en su altura definida (o máxima), este ajuste beslute si el contenido se recorta, se harce desplazable o se deja visible fuera del recuadro.
Gør det muligt at optage med et "hermana" vandret: overflow-x controla los laterales izquierdo y derecho, mientras que overflow-y se centra en arriba y abajo. Y, por supuesto, la propiedad abreviada overløb permite establecer ambos ejes a la vez con uno o dos valores.
Syntaksis og tilladte værdier
I sin mere direkte form, overflow-y accepterer værdierne skjult, rul, auto y synlig; desde especificaciones modernas también eksisterende klip. Puedes declararla así:
/* CSS */
selector {
overflow-y: hidden | scroll | auto | visible | clip;
}
Hvis man bruger forkortelsen overløb, kan gå en eller to værdier. Con un valor, se aplica a ambos ejes; con dos valores, el primero corresponde a overflow-x (horisontal) og den anden overløbs-y (lodret):
/* Un solo valor, aplica a X e Y */
.container { overflow: auto; }
/* Dos valores: overflow-x overflow-y */
.panel { overflow: hidden auto; }
Significado detallado de cada valor
Es fácil quedarse en la superficie, men cada palabra clave encierra un comportamiento específico, y algunos incluyen reglas de accesibilidad y rendimiento importantes.
-
synlig (værdi ved defekt): el contenido no se recorta y puede sobresalir más allá del área de padding del elemento. El elemento no se convierte en contenedor desplazamiento; udil si no quieres limitar el contenido, men puede provocar solapamientos con otros componentes.
-
skjulte: el contenido se recorta en el borde del polstring; no se muestran barras de desplazamiento. El contenido sigue existiendo en el flujo interno, men ingen er synlige fuera del área. Aunque el usuario no pueda hacer scroll manual, sí puede desplazarse de forma programática (for eksempel, med scrollTop eller desplazando el foco), de modo que el elemento se overvejer contenedor de desplazamiento.
-
klip: optag indholdet i overløbsklipskant, bestemt af
overflow-clip-marginEn forskel på skjult ingen tilladelse desplazamiento, ingen manual er programático. No crea un nuevo contexto de formateo por sí mismo; si necesitas aislar el flujo (como haría auto/scroll/skjult), combínalo condisplay: flow-root. Úsalo cuando quieras un corte tajante sin scroll ni "resquicios". -
rulleindholdet er registreret og siempre se muestran barras de desplazamiento en el eje al que aplique, haya o no desbordamiento real. Esta constancia evita que las barras aparezcan y desaparezcan cuando el contenido fluctúa; ten en cuenta que, aun así, al imprimir puede que el contenido desbordado se incluya según el motor de indtryk.
-
autoligner en skriftrulle, men solo añade barras cuando søn necesarias. Si el contenido cabe, el resultado visual se aproxima a synlig, men el elemento ya actúa como contenedor de desplazamiento y además etablere en ny kontekst for formateo por motivos de rendimiento y reflujo con elementos flotantes.
Matices esenciales que cambian el resultado
Hay cinco detalles que no conviene pasar por alto y que, en la práctica, marcan la diferencia: las dimensioner, el contexto de formateo, la interacción entre ejes, la impresión y el soporte desplazamiento programático.
Para que el desbordamiento vertical tenga efecto real, el bloque debe tener altura (højde) eller altura máxima (max-højde) definidas; si trabajas en términos lógicos, usa blokstørrelse eller maks. blokstørrelse. Para escenarios dinámicos, aprende en obtener la altura de un elemento. En el eje horisontal ocurre lo propio con bredde/maks. bredde o inline-størrelse/max-inline-størrelse; otra opción para forzar el desbordamiento en línea es mellemrum: nowrap.
Al elegir cualquier valor distinto de synlig og klip para overløb/overløb-y, el elemento skabe en ny kontekst for formateo de bloque. Esto evita que, por ejemplo, un float vecino reempaquete el contenido en cada paso de scroll, algo que degradaría el rendimiento al desplazarse.
Hay también reglas de interacción entre ejes que sorprenden la primera vez: si estableces synlig i et udkast y en el otro usas un valor que ingen hav synlig ni klip, ese synlig aktuel som autoAsimismo, si pones klip i et eje y en el otro no es synlig ni klip, el klip se comporta como hidden; conviene conocerlo para evitar resultados inesperados.
En la práctica diaria, mucha gente observa que al aplicar rul automatisk og udskub, elementet bliver et rullebeholder y ciertas acciones (como pseudo-elementos que sobresalen) pueden activar también el desplazamiento en el otro eje si no se controla bien. Es un comportamiento coherente con la especificación y los motores de renderizado actuales.
Eksempel rápido: fijar la altura y activar el scroll lodret
Una demostración típica består af en acotar la altura de un bloque de texto y permitir que el exceso se desplace verticalmente. En este caso, overflow-y: auto añade la barra solo cuando haga falta.
<div class="caja">
<p>Texto largo...</p>
<p>Más texto...</p>
</div>
.caja {
max-height: 220px;
padding: 12px;
border: 1px solid #ccc;
overflow-y: auto; /* barra vertical solo si es necesaria */
overflow-x: hidden; /* evitamos scroll horizontal accidental */
}
Se detaljerne: overflow-x: skjult komplementært a overflow-y para impedir que vibraciones de layout, sombras o pseudo-elementos provoquen una barra horizontal indeseada.
Kontrol og desplazamiento med JavaScript
Cuando el contenedor es desplazable (automatisk, rul eller inkluder skjult), puedes mover el contenido por código con propiedades y métodos estándar como Element.scrollTop y Element.scrollTo(). Esto tillade, por ejemplo, llevar el foco visual a un ancla interior o simular un salto al final de la liste.
// Desplazar 200px hacia abajo
const panel = document.querySelector('.panel');
panel.scrollTop = 200;
// O ir con precisión a una posición
panel.scrollTo({ top: 0, behavior: 'smooth' });
Hay una excepción explícita: si usas overflow: klip, brugeragenten ingen tilladelse desplazamiento programático; El contenido fuera del borde de klip er ikke tilgængelig med el ratón ikke desde JavaScript.
Tilgængelighed: teclado, foco y lectores de pantalla
Et område, der kan afløses, er ikke muligt fokuserbar via teclado, así que el usuario que navega sin ratón puede quedarse sin forma de desplazarla. En Firefox og en Chrome 132 eller overlegen, brugerne til at rulle se har fokuseret på defekte; en otros navegadores, añade tabindex="0" til containeren.
Nu bien, si introducerer ese tabulatorstop a ciegas, un lector de pantalla puede llegar a la región sin contexto. Para mitigarlo, asigna un rol ARIA adecuado (f.eks. role="region") og andel en antal tilgængelige med aria-label o aria-labelledby. Un etikette claro mejora la navegación asistida sin ofre usabilidad.
Overløb-x y overløb-y: cómo se combinan
Ejendommen forkortet overløb permite establecer ambos ejes a la vez con uno o dos valores; cuando especificas dos, el primero es para overflow-x og det andet til overløbs-y. Esto facilita casos como evitar la barra horisontal a la vez que tillader scroll lodret.
/* Evita barra horizontal, permite scroll vertical si hace falta */
.contenedor { overflow: hidden auto; }
Como recordatorio rápido, los valores disponibles para configurar el desbordamiento son: synlig, skjulte, klip, rulle y autoØjeniveauet, overflow-x gobierna el flujo horisontal y overløbs-y el lodret, y puedes combinarlos según convenga.
"Klipkant" y overløb-klipmargin
Hvis du vælger overløb: klip (o solo en el eje Y), el recorte se realiza en el denominado borde de clip de desbordamiento. Ese borde puede extenderse más allá del padding gracias a overflow-clip-margin, som accepterer en longitud para dejar "aire" antes de recortar.
.tarjeta {
overflow-y: clip; /* cortar sin permitir scroll */
overflow-clip-margin: 8px; /* recorta 8px por fuera del padding */
}
Husk klip ikke oprettet en ny kontekst for formateo. Si necesitas ese aislamiento (for ejemplo, para gestionar floats eller contener márgenes colapsados), combina clip con display: flow-root y así consigues el mismo efecto de contención que aportan auto/scroll/hidden.
Cuándo necesitas dimensiones explícitas
Para que el recorte o el scroll aparezcan de verdad, el elemento necesita una højde fastlagt (højde o max-højde) en el eje de bloque, o su equivalente lógico blokstørrelse/maks. blokstørrelse; si nej, el contenedor crecerá con el contenido y el desbordamiento no se activará.
En layouts horizontales (for eksempel, karruseller), definere bredde/maks. bredde o inline-størrelse/max-inline-størrelse para forzar el desbordamiento en el eje X; también puedes usar mellemrum: nowrap para impedir los saltos de línea y provocar que el contenido exceda el ancho disponible.
Evitar la barra horisontal por pseudo-elementos o sombras
Un caso real muy habitual: un pseudo-elemento ::efter que flota hacia la derecha, o una sombra alargada, sobrepasa el contenedor y Aktiver den vandrette barre en un elemento que ya tiene overflow-y. Esto sucede porque, al convertirse and contenedor de scroll, el motor overvejer el área desbordada para el eje opuesto.
Typiske løsninger: applikation overflow-x: skjult en el contenedor desplazable; controla el tamaño y posición del pseudo-elemento (s. ej., con omdanne en lugar de posición absoluta si procede); o acota con klip/klipsti Si buscas un recorte tajante. Cualquiera de estas estrategias evita el scroll vandret indeseado uden at ofre den vertikale.
Demostración de resultados con cada valor
El siguiente bloque muestra cómo cambian la visibilidad y las barras con los distintos valores de overflow-y, todos con la den mindste højde for forzar el desbordamiento vertikal:
<div class="demo visible">Contenido largo...</div>
<div class="demo hidden">Contenido largo...</div>
<div class="demo clip">Contenido largo...</div>
<div class="demo scroll">Contenido largo...</div>
<div class="demo auto">Contenido largo...</div>
.demo {
max-height: 140px;
padding: 10px;
margin-bottom: 12px;
border: 1px solid #bbb;
}
.visible { overflow-y: visible; }
.hidden { overflow-y: hidden; }
.clip { overflow-y: clip; }
.scroll { overflow-y: scroll; }
.auto { overflow-y: auto; }
Læg mærke til det rul siempre muestra la barra lodret, mientras que auto solo lo hace cuando el texto excede la altura. En skjult, el contenido sobrante no se ve pero sigue estando ahí; et klip, directamente no existe una vía desplazamiento, ni si quiera con código.
Impresión y contenido desbordado
En detaljeret menos conocido: con overløb: rul, algunos motores de impresión pueden acabar imprimiendo el contenido desbordado aunque no quepa en pantalla. Si tu caso de uso contempla eksporter en PDF eller papel, pruébalo y beslute om prefieres skjulte o incluso klip for at undgå uventede afgange.
Kompatibilitet med entre navegadores
Egenskaberne overløb, overløb-x y overløb-y gozan de soporte sólido en los navegadores modernos desde har mange versioner. El tapperhed klip og din kammerat overflow-clip-margin pertenecen a especificaciones más recientes, pero su faktisk adoption er omfattende y crece con cada lanzamiento; comprueba las matricer de compatibilidad si apuntas a entornos antiguos.
En cuanto al foco de contenedores desplazables, recuerda la peculiaridad: Firefox og Chrome 132+ los hacen focuseables por defecto; para el resto, añade tabindeks = "0" Manualmente y un roll/nombre accesible for una experience consistente.
Buenas prácticas de maquetación
No todo es poner una barra y listo: combina propiedades para prevenir desplazamientos indeseados y ganar og estabilidad visuel. Aquí van unas pautas que funcionan muy bien en producción.
-
Definer dimensioner: sin højde/max-højde o blok-størrelse, el contenedor crecerá y no vers el efecto de overflow-y.
-
Añade overflow-x: skjult cuando bruger overflow-y, salvo que necesites bælte-og-bøjler horisontale. Evitas barras laterales provokadas por sombras, bordes o pseudo-elementos.
-
Foretrækker automatisk scroll foran Si quieres que la barra aparezca solo cuando haga falta, y scroll si buscas dimensiones estables de layout sin "saltos" por aparición/desaparición de scrollbars.
-
Usa klip cuando quieras recorte duro (sin rutas de desplazamiento), y combínalo con display: flow-root si necesitas contención del flujo.
Relación med DOM og API'er
I JavaScript, DOM-eksponeringen overløbY como propiedad de estilo, y puedes inspeccionar/ajustar el estado del elemento: element.style.overflowY y getComputedStyle(element).overflowY. Además, para desplazar contenidos usa rulTop y scrollTo(), salvo con clip donde no hay scroll de ningún tipo.
const panel = document.querySelector('.panel');
panel.style.overflowY = 'auto';
if (getComputedStyle(panel).overflowY !== 'visible') {
panel.scrollTo({ top: panel.scrollHeight, behavior: 'smooth' });
}
Si trabajas con enlaces internos, recuerda que tabulær hacia un elemento oculto dentro de un contenedor hidden/auto puede harcer que el navegador automatisk rulle para ponerlo en vista; es una forma legítima de desplazamiento programático, udil para mejorar la navegación con teclado.
Tabla mental rapida af muligheder
Til klargøring af udsigten: synlig lad være med at gøre alt om salget; skjulte recorta y permite scroll programático; klip optag og tillad ikke at rulle; rulle recorta pero siempre muestra barras; y auto solo muestra barras cuando procedure. Y recuerda que ingen synlig/klip oprettet formatsammenhæng, vital para rendimiento con floats.
Kombinationseksempler af ejes
Dos patrones que verás constantemente: tillad lodret rulning sin barra horisontal, y recortar en un eje con clip mientras el otro se desplaza automáticamente.
/* Scroll vertical, sin horizontal */
.lista {
max-height: 300px;
overflow-x: hidden;
overflow-y: auto;
}
/* Recorte duro en X, desplazamiento automático en Y */
.panel {
overflow-x: clip;
overflow-y: auto;
display: flow-root; /* contén el flujo si lo necesitas */
}
Ti præsenterer las reglas de interacción: Si un eje usa un valor distinto de visible/clip y el otro pone synlig, ese synlig se elevator i bil. Con clip sucede algo parecido: si el otro eje no es synlig ni klip, el klip aktuelt som skjult.
Almindelige anvendelsestilfælde
Moderne grænseflader, overløbs-y Det er uoverskueligt for chatbokse, filtre, menuer, logfiler eller listedoer med altura. Se komplementer med cabeceras pegajosas y footers dentro del contenedor, y suele acompañarse de overflow-x: skjult for at undgå sidebarrer.
En diseños con tarjetas o modales, puedes alternar entre auto (para no mostrar la barra si no hace falta) y rulle (para estabilizar el ancho cuando aparecería la barra durante la carga). Si el modal debe recortar partes decoratives, klip evita interacciones y ahorra cálculos.
Almindelige fejl og hvordan man undgår dem
El fallo más repetido es declarar overløb uden højde y esperar una barra que nunca llega; definere højde o max-højde/blok-størrelse. El segundo es olvidarse del eje vandret: altid værdi overflow-x en paralelo, sobre todo si usas sombras o pseudo-elementos.
En tredje er ikke at overveje tilgængelighed: contenedores desplazables sin foco de teclado o sin nombre accesible complican la vida a usuarios con lector de pantalla. Añade tabindex, rolle og aria-label cuando ingen havfokuserbar por defecto.
Recursos relacionados
Si quieres ampliar, revisa el tutorial general de CSS-dekoration og referencen til DOM til overflowY en elementos. Estas páginas cubren desde fundamentalos hasta peculiaridades finas de implementación y compatibilidad.
Dominær overløb-y implica entender qué recorta, cuándo se desplaza, cómo interactúa con el eje opuesto y qué efecto tiene en el contexto de formateo; con las pautas de dimensions, accesibilidad y combinación con overflow-x, es sencillo lograr paneles fluidos, sin barras imprevistas y con un desplazamiento suave tanto para usuarios como para scripts.