Resumindo
- O efeito parallax cria profundidade movendo camadas em velocidades diferentes, com as camadas mais próximas se movendo mais rápido que as distantes.
- Em sites, a rolagem parallax já pode ser feita em CSS com animações guiadas por rolagem, sem JavaScript, nos navegadores que as suportam.
- A técnica mais antiga
background-attachment: fixedé ignorada pelo Safari do iOS, então não deve ser usada como base no celular. - Movimentos grandes ou rápidos de parallax podem causar desconforto em pessoas com distúrbios vestibulares, por isso devem ser desativados quando o visitante prefere movimento reduzido.
- Um parallax sutil, com camadas se movendo só um pouco, dá profundidade sem distrair do conteúdo.
Nesta página
O efeito parallax faz um design plano parecer profundo movendo suas camadas em velocidades diferentes: o fundo se arrasta devagar, o meio um pouco mais rápido e o primeiro plano mais rápido ainda, como as colinas distantes que parecem rastejar pela janela do trem enquanto os postes da cerca passam voando. Em sites, isso costuma acontecer enquanto você rola a página. No motion design, acontece ao longo do tempo, em um loop ou em um vídeo. Seja como for, o melhor parallax é pequeno, lento e desligado para quem pediu ao dispositivo menos movimento.
Como o parallax cria profundidade
O cérebro julga a distância em parte pelo movimento relativo. Quando duas camadas se movem na mesma velocidade, são lidas como uma superfície plana. Quando uma se move mais devagar, parece mais distante. Três camadas costumam bastar para criar uma profundidade convincente.
O que vai nela
O que vai nela
Velocidade em relação à rolagem
O que vai nela
Efeito parallax em CSS com animações guiadas por rolagem
O CSS moderno consegue ligar uma animação à posição de rolagem em vez de ao tempo, usando animation-timeline. O navegador a executa fora da thread principal, então ela fica fluida, e não é preciso JavaScript. O suporte ainda está crescendo: funciona em navegadores Chromium e no Safari recente, então confira o suporte de navegadores no MDN e trate o efeito como um aprimoramento. Sem suporte, a página simplesmente não se move, e tudo bem.
.hero {
position: relative;
overflow: clip;
isolation: isolate; /* keeps the layer inside the hero */
min-height: 80vh;
view-timeline: --hero block;
}
.hero__bg {
position: absolute;
inset: -15% 0; /* extra room so edges never show */
background:
radial-gradient(circle at 75% 20%, #7c3aed 0%, transparent 45%),
linear-gradient(170deg, #0f0b1e 0%, #1e1b4b 100%);
z-index: -1;
}
@media (prefers-reduced-motion: no-preference) {
@supports (animation-timeline: view()) {
.hero__bg {
animation: hero-depth linear both;
animation-timeline: --hero;
}
}
}
@keyframes hero-depth {
from { transform: translateY(-10%); }
to { transform: translateY(10%); }
}A intensidade do movimento mora nos keyframes: 10% para cada lado é suave. Passe de 20% e o efeito começa a parecer um brinquedo de parque. Mover transform em vez de top ou background-position mantém o desenho barato para o navegador. Desempenho de degradês CSS explica por que degradês grandes e animados devem se mover, e não ser repintados.
Outras formas de criar rolagem parallax
Como funciona
animation-timeline: view() ou scroll() liga os keyframes à rolagemAtenção a
background-attachment: fixedComo funciona
Atenção a
Como funciona
translateZ rolam mais devagarAtenção a
Como funciona
Atenção a
requestAnimationFrameParallax e movimento reduzido
Para pessoas com distúrbios vestibulares, um movimento grande disparado pela rolagem pode causar tontura e náusea. A orientação da WCAG sobre animação a partir de interações pede que esse tipo de movimento possa ser desativado. A forma mais simples de respeitar isso é envolver o parallax em prefers-reduced-motion: no-preference, como no código acima, para que ele só rode para quem não pediu menos movimento. Prefers reduced motion cobre a media query e como testá-la.
Evite
- Seções inteiras deslizando em velocidades diferentes
- Texto ou botões em camadas em movimento
- Movimento que ignora os ajustes de movimento reduzido
- Sequestro de rolagem que muda a velocidade dela
- Parallax em todas as seções da página
Faça
- Uma camada de fundo se movendo um pouco
- Conteúdo na rolagem normal
- Movimento só sob
no-preference - Rolagem nativa, intocada
- Parallax em um só lugar: geralmente o hero
Parallax em motion design e vídeo
O parallax não é só para rolagem. Em um post em movimento, um loop ou uma sequência de títulos, a mesma regra cria profundidade ao longo do tempo: um fundo que se arrasta devagar, luz ou partículas que se movem um pouco mais rápido e palavras paradas na frente. Esta última parte importa. Palavras paradas sobre um campo suavemente em movimento parecem calmas e seguras, enquanto palavras que também se movem parecem inquietas.
Um hero de site com profundidade: o campo de fundo se move devagar atrás de palavras paradas, então o olhar lê o título primeiro.
As partículas são uma camada intermediária natural: efeitos de partículas mostra como pequenos e tênues pontos se movendo um pouco mais rápido que o fundo somam um segundo plano de profundidade. Mantenha o movimento de cada camada lento e suavizado; princípios de motion design explica por quê.
Como criar um hero com parallax, passo a passo
- 1
Desenhe primeiro parado
O hero precisa parecer acabado sem movimento algum, porque é isso que os visitantes com movimento reduzido e os navegadores sem suporte vão ver.
- 2
Separe as camadas
Coloque o campo de cor do fundo em uma camada própria, formas ou fotos em uma segunda e o título e o botão na própria página.
- 3
Mova só a camada de trás
Comece com apenas o fundo se movendo 10% para cada lado. Some uma camada do meio só se a profundidade pedir.
- 4
Teste no celular
Confira se rola de forma fluida em um celular intermediário e se nada pula no Safari do iOS.
- 5
Ative o movimento reduzido e confira de novo
Nos ajustes de acessibilidade do sistema, peça movimento reduzido e confirme que a página está calma e completa.
Para a camada de fundo em si, um degradê vivo faz mais do que um chapado. Um Mark do Gradiently exportado como loop WebM ou MP4 contínuo com o Pro, posto atrás do seu hero, dá à página uma camada de trás que já se move com suavidade e que é só sua depois de reservada. Combine com design de seção hero e fundos para hero de site para os tamanhos.
Perguntas frequentes
O que é o efeito parallax?
Uma forma de criar profundidade movendo camadas em velocidades diferentes, de modo que as mais próximas se movam mais rápido que as distantes, como na vida real.
Dá para fazer o efeito parallax só com CSS?
Dá. As animações guiadas por rolagem do CSS ligam keyframes à posição de rolagem sem JavaScript, nos navegadores que suportam animation-timeline. Os métodos mais antigos em CSS puro usam background-attachment: fixed ou perspectiva 3D.
Por que o background-attachment: fixed não funciona no iPhone?
O Safari do iOS ignora o attachment fixo do fundo, então o fundo rola normalmente. Use animações guiadas por rolagem ou uma técnica baseada em transform.
A rolagem parallax prejudica a acessibilidade?
Movimentos grandes disparados pela rolagem podem fazer mal a pessoas com distúrbios vestibulares. Mantenha-o sutil e desative-o quando o visitante preferir movimento reduzido.
O parallax prejudica o desempenho?
Não, se você animar transform e deixar o navegador conduzir com animações guiadas por rolagem. Scripts que movem elementos a cada evento de rolagem é que causam travadas.
Escrito pelo Gradiently
A equipe por trás do Gradiently, uma ferramenta de design criada em torno dos Marks: gradientes vivos que fazem tudo o que você cria ter a sua cara.
Ver nosso perfil