CSS scroll snap: carrosséis e seções de tela cheia

Guia de CSS scroll snap

CSS scroll snap: carrosséis, seções de tela cheia e um playground ao vivo

Teste cada valor de scroll-snap-type, scroll-snap-align e scroll-snap-stop em uma área de rolagem ao vivo e depois copie um carrossel só com CSS e seções de tela cheia que continuam acessíveis.

O scroll snap faz uma caixa com rolagem parar em filhos escolhidos, e não em qualquer lugar. Coloque scroll-snap-type: x mandatory (ou y, ou proximity) no contêiner de rolagem e depois scroll-snap-align: start, center ou end em cada filho. Adicione scroll-padding para headers fixos e scroll-snap-stop: always para parar em cada item.

Propriedades de scroll snap em resumo

O scroll snap antes exigia uma biblioteca de carrossel. Hoje, poucas linhas de CSS entregam cards deslizáveis, uma galeria paginada ou seções de tela cheia, com rolagem com inércia e suporte a teclado cuidados pelo navegador. Use o playground para sentir a diferença entre cada valor antes de copiar qualquer código.

Perguntas frequentes

Qual a diferença entre mandatory e proximity?

Com mandatory, o contêiner sempre se acomoda em uma posição de snap quando a rolagem para. Com proximity, ele só faz o snap quando a rolagem termina perto de uma, o que deixa as pessoas livres para ler no meio do caminho. proximity é o padrão quando você escreve só o eixo.

Por que o scroll snap não funciona?

As causas comuns são: o scroll-snap-type está nos filhos em vez de no pai que rola, o pai não transborda de fato (defina overflow-x: auto e um tamanho fixo), ou os filhos não têm scroll-snap-align. Para snap na página inteira, o contêiner é o html, não o body.

Como evito que um header fixo cubra as seções com snap?

Defina scroll-padding-top no contêiner de rolagem com a altura do header, por exemplo html { scroll-padding-top: 64px; }. As seções com snap e os saltos de âncora passam a parar abaixo do header, e não por baixo dele.

Consigo fazer um carrossel sem JavaScript?

Sim, para deslizar e rolar: uma linha flex com overflow-x: auto e snap x mandatory já é um carrossel funcional. Indicadores em bolinha que mostram o slide atual, autoplay e loop ainda precisam de um pouco de script.

O CSS scroll snap é suportado em todo lugar?

O scroll-snap-type é Baseline amplamente disponível desde 2022 no Chrome, Edge, Firefox e Safari, e o scroll-snap-stop desde julho de 2022. Você pode usá-lo sem fallback; navegadores sem suporte simplesmente rolam livremente.

Carrosséis que as pessoas conseguem usar

Seções de tela cheia sem a armadilha

Carrossel de cards só com CSS

Carrossel horizontal com o próximo card aparecendo

Deslize, role para o lado ou clique dentro e use as setas. Cada card tem 80 por cento da largura, então o próximo aparece na borda.

Seções de tela cheia

Seções verticais com snap abaixo de um header fixo

O snap fica no html, a área de rolagem da página. O scroll-padding-top mantém as seções livres de um header de 64px, e proximity evita prender seções longas.

Botões de próximo e anterior

Controle o carrossel com scrollBy

O navegador termina o movimento no ponto de snap mais próximo, então rolar a largura de um card cai exatamente no próximo card.

Playground de scroll snap

Eixo

Rigidez

Alinhamento do slide

Parar em cada slide

Prévia de scroll snap, role ou use as setas

Slide {n}

Copiar CSS

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site