Scroll horizontal sem partir a acessibilidade

A secção que trava o scroll vertical e continua na horizontal é bonita. Também é o sítio onde a maioria dos sites falha o teclado.

Duistt

O padrão é simples de implementar e fácil de estragar: fixa-se a secção, traduz-se uma faixa no eixo X em função do progresso de scroll e liberta-se no fim. O que costuma faltar é tudo o resto.

Regras que não são negociáveis

  • Respeitar prefers-reduced-motion: sem motion, a faixa vira uma lista com scroll nativo.
  • Cada cartão continua focável por Tab e a secção acompanha o foco.
  • A altura do pin é calculada a partir da largura real da faixa, não de um valor fixo.
  • Em mobile, desliga-se o pin e usa-se scroll-snap nativo.

O detalhe que ninguém testa

Redimensionar a janela a meio da secção. Se a altura do pin não for recalculada, o utilizador fica preso ou salta duzentos pixels. Um ScrollTrigger.refresh() com debounce resolve — e evita o bug mais reportado deste padrão.

Partilhar

Artigos relacionados

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Comece o seu projeto

Vamos evoluir juntos.