CSS Scroll Snap: carruseles y secciones a pantalla completa

Guía de CSS Scroll Snap

CSS Scroll Snap: carruseles, secciones a pantalla completa y un playground en vivo

Prueba cada valor de scroll-snap-type, scroll-snap-align y scroll-snap-stop en un contenedor en vivo y luego copia un carrusel solo con CSS y secciones a pantalla completa que siguen siendo accesibles.

Scroll snap hace que una caja con scroll se detenga en los hijos que elijas en lugar de en cualquier punto. Pon scroll-snap-type: x mandatory (o y, o proximity) en el contenedor de scroll y luego scroll-snap-align: start, center o end en cada hijo. Añade scroll-padding para headers fijos y scroll-snap-stop: always para detenerte en cada elemento.

Propiedades de scroll snap de un vistazo

Antes, scroll snap necesitaba una librería de carruseles. Hoy, unas pocas líneas de CSS te dan tarjetas deslizables, una galería paginada o secciones a pantalla completa, con scroll con inercia y soporte de teclado gestionados por el navegador. Usa el playground para notar la diferencia entre cada valor antes de copiar código.

Preguntas frecuentes

¿Qué diferencia hay entre mandatory y proximity?

Con mandatory, el contenedor siempre se asienta en una posición de snap cuando el scroll se detiene. Con proximity solo hace snap cuando el scroll termina cerca de una, lo que deja a la gente libre para leer entre medias. proximity es el valor por defecto cuando solo escribes el eje.

¿Por qué no funciona scroll snap?

Las causas habituales son: scroll-snap-type está en los hijos en lugar de en el padre con scroll, el padre no desborda realmente (pon overflow-x: auto y un tamaño fijo), o los hijos no tienen scroll-snap-align. Para el snap a nivel de página, el contenedor es html, no body.

¿Cómo evito que un header fijo tape las secciones con snap?

Pon scroll-padding-top en el contenedor de scroll con la altura del header, por ejemplo html { scroll-padding-top: 64px; }. Así las secciones con snap y los saltos a anclas se detienen debajo del header en lugar de quedar tapados por él.

¿Puedo crear un carrusel sin JavaScript?

Sí para deslizar y hacer scroll: una fila flex con overflow-x: auto y snap x mandatory es un carrusel que funciona. Los indicadores de puntos que muestran la diapositiva actual, la reproducción automática y el bucle siguen necesitando un poco de script.

¿CSS scroll snap tiene soporte en todas partes?

scroll-snap-type es Baseline ampliamente disponible desde 2022 en Chrome, Edge, Firefox y Safari, y scroll-snap-stop desde julio de 2022. Puedes usarlo sin alternativa; los navegadores que no lo soportan simplemente hacen scroll libre.

Carruseles que la gente puede usar de verdad

Secciones a pantalla completa sin trampas

Carrusel de tarjetas solo con CSS

Carrusel horizontal con la siguiente tarjeta asomando

Desliza, haz scroll lateral o haz clic dentro y usa las flechas. Cada tarjeta ocupa el 80 por ciento del ancho, así que la siguiente se ve en el borde.

Secciones a pantalla completa

Secciones verticales que hacen snap bajo un header fijo

El snap está en html, el contenedor de scroll de la página. scroll-padding-top mantiene las secciones libres de un header de 64px, y proximity evita atrapar las secciones largas.

Botones de siguiente y anterior

Controlar el carrusel con scrollBy

El navegador termina el movimiento en el punto de snap más cercano, así que desplazarse el ancho de una tarjeta deja justo en la siguiente.

Playground de scroll snap

Eje

Rigidez

Alineación de la diapositiva

Detenerse en cada diapositiva

Vista previa de scroll snap, haz scroll o usa las flechas

Diapositiva {n}

Copiar CSS

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio