Frontends com Vibecoding · Capítulo 12 de 35 · 52 min
Projetar movimento, assinatura e narrativas por rolagem
Cada movimento passa por um teste de utilidade, a rolagem vira linha do tempo e a página ganha uma assinatura só, com o custo de velocidade sob controle.
Este capítulo faz parte do curso gratuito Frontends com Vibecoding.
Um movimento só entra no site quando passa num teste de utilidade, e então fica no degrau mais barato que o executa. Animação é qualquer coisa que muda sozinha na tela, como o botão que afunda ao ser apertado. A escada vai do CSS puro ao GSAP, e quase toda tela de negócio resolve tudo nos dois primeiros degraus.
Você termina sabendo perguntar se cada animação da página ajuda a pessoa a entender algo, e sabe testar se o site respeita quem pediu menos movimento no próprio aparelho. Tempo de leitura: cerca de 52 minutos, e o teste no seu celular, mais dez.
O teste tem um critério só: o movimento ajuda quem usa a tela a entender o que acabou de acontecer. Três casos passam. Retorno de ação, como o botão que afunda quando é apertado. Transição de estado, como o item que desliza ao entrar na lista. Orientação espacial, como o painel que vem da direita e mostra de onde veio.
Reprovam o texto que aparece letra por letra, o elemento que gira sem motivo e a animação que segura o conteúdo até terminar. Esses três atrasam a leitura do preço, e quem está com pressa desiste antes de chegar ao botão de comprar.
A skill frontend-design, o guia que o agente de IA lê antes de desenhar, foi atualizada pela Anthropic com a mesma régua. Movimento que dispara sozinho serve só para chamar atenção, por isso um único momento bem escolhido rende mais que efeitos espalhados pela página.
O padrão genérico faz o contrário. Cada seção entra com fade e slide, ou seja, surge transparente e sobe, e cada cartão muda de cor sob o cursor. A skill chama isso de assinatura de página feita por máquina, e quem visita reconhece a fórmula de longe, antes mesmo de reparar na marca.
Guarde o movimento que dispara sozinho para um momento só, a abertura da página ou a revelação de uma peça. Todo o resto responde a uma ação da pessoa, ao abrir, expandir ou confirmar, porque aí o movimento explica o que mudou na tela.
Ver como texto
Fluxograma do teste de utilidade do movimento, com três perguntas em sequência. Primeira: o movimento ajuda a entender o que acabou de acontecer? Se não, sai, como o texto letra por letra e o giro sem motivo. Se sim, segunda pergunta: ele responde a uma ação da pessoa? Se sim, fica, como retorno de ação, transição de estado e orientação espacial. Se não, terceira pergunta: é o único momento da página, a abertura ou a revelação de uma peça? Se sim, fica como assinatura. Se não, sai, como o fade e slide em cada seção.
A escada ordena o gasto, e o primeiro degrau é o CSS puro, a linguagem que já vem no navegador. A transition, que é a instrução para suavizar a troca de estado, cuida do botão que escurece, e os keyframes cuidam do cartão que entra. Peso baixado pelo visitante: zero.
O segundo degrau são os recursos que o próprio navegador já traz prontos: janela, aviso flutuante, rolagem usada como linha do tempo e animação escrita em script. Eles também custam zero de download, porque nada de novo desce para o celular de quem visita.
A rolagem como linha do tempo é a exceção do degrau, porque o Firefox ainda não a executa. Por isso ela entra sempre atrás de um teste de suporte. E respeita a preferência por menos movimento, que é o ajuste do aparelho de quem passa mal com animação.
Suba ao terceiro degrau só quando o de baixo falhar na sua tela. Três sinais autorizam: gesto que herda a velocidade do dedo, mola física e várias entradas coordenadas. O pacote é o Motion, e ele custa um arquivo a mais no que o visitante baixa.
O quarto degrau é o GSAP, reservado à linha do tempo longa amarrada à rolagem, quando a animação é o próprio produto. Ele ficou gratuito, então o custo virou tempo de estudo. Fora desses casos, instalar biblioteca de animação só soma peso e mais uma peça para manter atualizada.
Ver como texto
A escada do movimento em quatro degraus, na ordem de gasto. O primeiro degrau é o CSS puro, com transition para mudança de estado e @keyframes para o resto, e ele não acrescenta nada ao que a pessoa baixa. O segundo degrau são os recursos nativos do navegador: transição entre telas, rolagem usada como linha do tempo, popover e dialog, também sem peso novo. O terceiro degrau é a biblioteca Motion, indicada quando a interface em React precisa de gesto, mola e entradas coordenadas, e ela acrescenta um pacote ao projeto. O quarto degrau é o GSAP, indicado para linha do tempo longa amarrada à rolagem, e ele acrescenta pacote e tempo de estudo. Suba um degrau por vez e só quando o de baixo falhar na sua tela.
Os três sinais do terceiro degrau cabem numa mesa de teste, montada no laboratório abaixo. Cada sinal tem o próprio controle: os quatro orçamentos entram em sequência, o botão afunda e volta pela mola, e o cartão solto continua na velocidade do dedo. Mexa na rigidez e no amortecimento e veja a mesma mola frear o botão e o cartão.
Repare no que o CSS puro deixa de fazer: ele não conhece a velocidade do gesto nem coordena quatro entradas com uma linha só. Se a sua tela pede um desses comportamentos, o pacote se paga. Se pede só o fade e o hover, fique no primeiro degrau e guarde o laboratório como prova.
Fora da escada ficam ferramentas de nicho, cada uma com um caso só. O Rive anima personagem que reage ao toque, em arquivo menor que o Lottie, que é o desenho animado exportado do After Effects. Anime.js traz física leve, Theatre.js monta a sequência numa linha do tempo visual e Lenis suaviza a rolagem.
O react-spring entra quando o efeito precisa parecer físico, como o cartão que balança ao ser solto. Para celebrar uma compra, o canvas-confetti é o padrão, porque pesa seis quilobytes e não arrasta nenhuma outra peça junto. O tsparticles só se justifica quando o fundo animado é parte do produto.
Já o Scrollama é a referência para narrativa por rolagem, a reportagem em que o gráfico muda enquanto o texto desce. Cursor desenhado sob medida cabe em vitrine, nunca em página de pagamento, porque ele esconde o que é clicável e a pessoa erra o botão.
Duas preferências do aparelho valem em qualquer degrau. Quando a pessoa liga o movimento reduzido, corte deslocamento longo e giro, e mantenha só mudança de cor. Quando ela liga o contraste alto, o estado marcado por um tom claro ganha borda, porque a diferença sutil some na tela dela.
| Degrau | Ferramenta | Quando entra |
|---|---|---|
| 1. CSS puro | transition e @keyframes | Botão que escurece, cartão que entra, círculo que gira; peso zero |
| 2. Nativo do navegador | dialog, popover, @starting-style, scroll-driven, WAAPI | Janela, menu, aviso que entra suave, barra amarrada à rolagem; peso zero, com scroll-driven ainda em Limited Availability, sem Firefox |
| 3. Motion 13.1 | pacote motion (absorveu Popmotion e Motion One) | Gesto que herda velocidade, mola, entradas coordenadas em React; custa um pacote |
| 4. GSAP | timelines, ScrollTrigger e SplitText | Linha do tempo longa amarrada à rolagem; gratuito desde abril de 2025, custa estudo |
| Nicho | Rive, Lottie, Anime.js 4.5, Theatre.js, Lenis, react-spring 10 | Personagem interativo, vetor do After Effects, física leve, sequenciador, rolagem suave, mola física |
| Celebração | canvas-confetti (6 kB), tsparticles, party.js | Padrão sem dependência; fundo que é produto; efeito preso a um elemento |
| Narrativa e cursor | Scrollama; cursor customizado | Reportagem por rolagem; cursor só em vitrine, nunca em página de pagamento |
Suba um degrau só quando o de baixo falhar na sua tela; respeite prefers-reduced-motion e prefers-contrast em todos.
Uma lista de orçamentos que revela cada linha ao rolar cabe inteira no primeiro degrau, em CSS puro. Comece sempre por ali, e só suba quando aquela tela específica falhar na sua mão.
Antes de aprovar a tela, abra a mesma seção com o script de animação desligado e confira que todo o conteúdo continua visível. Depois ligue o movimento reduzido e o contraste alto no aparelho e recarregue a página.
O critério de pronto é este: nada some, todo texto continua legível e cada estado se distingue com a tela parada. Se alguma informação depender da animação para aparecer, o movimento virou obstáculo e sai antes de publicar.
Animar rolagem, aviso e troca de tela sem instalar biblioteca
Com o teste de utilidade e a escada de custo em mãos, a rolagem e a troca de tela ganham movimento por recurso nativo do navegador.
O navegador já anima rolagem, aviso, troca de tela e número que muda, sem instalar nada. Quem revisa o que o agente entrega, ou seja, a IA que escreve código a seu pedido, ganha o critério para recusar a biblioteca que ele sugere. O degrau seguinte é o vídeo montado por programa.
A rolagem vira a linha do tempo da animação com duas linhas de folha de estilo. A caixa que rola ganha um nome, e o elemento que anima passa a olhar essa rolagem em vez de contar segundos no relógio.
Cada cartão de indicador cresce sozinho quando entra na área visível, sem script nenhum. O Firefox ainda não executa esse recurso, por isso ele entra atrás de um teste de suporte. Sem esse teste, o navegador antigo mostra a barra parada no zero, e a pessoa acha que a página travou.
Ver como texto
Duas formas de conduzir a mesma barra de progresso. Em cima, o relógio: a barra anda conforme os segundos passam, de zero a um segundo. Embaixo, a rolagem: três quadros da mesma caixa rolável, com o marcador de rolagem no topo, no meio e no fim, e a barra embaixo de cada quadro vazia, pela metade e cheia. Na última linha, o alerta: sem teste de suporte, o navegador que ainda não executa o recurso mostra a barra parada no zero.
O aviso que aparece depois de um clique entra e sai suave com @starting-style. Essa regra descreve o estado de partida do elemento, como a posição da porta antes de alguém abrir. Antes dela, sumir com suavidade exigia uma peça só para segurar o elemento na tela até o fim.
Esse mesmo navegador passa a animar a altura de um bloco que abre. O detalhamento de um pedido, um menu ou uma sanfona ganham transição escrita em duas linhas. Onde o recurso falta, o bloco abre na hora, inteiro e legível, então ninguém perde informação.
Laboratório ao vivo: rolagem, entrada suave e troca de tela
Role a caixa
Painel de loja, cenário ilustrativo
Pedidos do mês
812
Ticket médio
R$ 148
Entregas no prazo
94%
Devoluções
31
Satisfação
4,7
Suporte: sem rolagem como linha do tempo, a barra do topo e os medidores já aparecem cheios e os cartões, opacos.
Entra e sai suave
Aviso de estoque, cenário ilustrativo
Restam duas unidades deste tamanho.
Suporte: sem transição de display, o aviso aparece e some na hora, sem suavidade, e o texto continua legível.
Troca de tela
Lista de pedidos
Pedido aberto
A troca com View Transitions precisa de uma linha de script, por isso aqui ficam os dois estados parados.
Suporte: no mesmo documento, Chromium, Firefox 133 e Safari 18. Sem suporte, a tela troca na hora, sem cruzamento.
A troca de tela dentro da mesma página saiu do território das bibliotecas. O recurso chamado View Transitions já roda nos três navegadores principais, por isso ele vem antes de instalar qualquer peça de transição.
O efeito é o da foto da vitrine que continua na tela ao abrir o detalhe do produto, em vez de a tela piscar em branco. Quem compra segue com o olho no mesmo objeto, e a sensação de erro some.
Entre páginas diferentes, o mesmo cruzamento ainda falta no Firefox. Por isso a navegação precisa funcionar sem ele, e o efeito entra como bônus onde o navegador já entende.
O number-flow anima o número dígito a dígito, na direção certa, quando o faturamento do dia sobe no painel. Ele serve em indicador que muda ao vivo, porque o olho acompanha a subida e entende que o valor é recente. O número que muda uma vez só por página fica no contador em CSS do laboratório acima.
Ver como texto
Faturamento do dia num painel, em cenário ilustrativo, subindo de mil duzentos e oitenta para mil trezentos e quinze reais. Os dígitos que não mudam ficam parados. Os três que mudam aparecem em tiras verticais, com o dígito antigo embaixo, uma seta para cima e o dígito novo em cima, rolando na direção da subida. Embaixo, a regra: indicador que muda ao vivo pede number-flow, e número que muda uma vez por página fica no contador em CSS.
Vídeo montado por programa é o degrau acima. Em vez de alguém arrastar clipes num editor, o computador monta o vídeo a partir de uma receita escrita. É como a máquina de etiquetas que imprime mil variações do mesmo modelo, cada uma com o nome de um cliente.
Serve para vídeo de produto, relatório animado e peça de rede social que saem em série a partir de dados. O Remotion escreve esse vídeo em React e traz um estúdio visual para ajustar a curva de aceleração do movimento.
A licença do Remotion muda na próxima versão maior, então leia as condições antes de assinar. O Motion Canvas faz o mesmo sem React, e o Revideo é a terceira opção. Nenhum dos três substitui um player: eles produzem o arquivo que o player vai servir na página.
Canvas criativo é parente da mesma família. O p5.js serve a arte generativa e ao ensino, e o material antigo pede revisão porque o editor trocou de versão padrão. O Rough.js dá estética de desenho à mão, útil em rascunho. O PixiJS usa a placa de vídeo pelo navegador para desenhar milhares de peças sem travar.
| Ferramenta | O que faz | Quando entra |
|---|---|---|
| number-flow | número animado dígito a dígito; React, Vue, Svelte, vanilla e React Native | Indicador ao vivo em painel; número que muda uma vez fica em CSS |
| Remotion 4.0 | vídeo em React, com Studio, keyframes e editor de easing | Vídeo em série a partir de dados; ler a licença prevista para a v5 |
| Motion Canvas 3.x | vídeo em TypeScript puro, linha do tempo por geradores, sem React | Time que não usa React; explicação animada e relatório |
| Revideo | terceira opção da categoria de vídeo por código | Avaliar quando os dois anteriores não servirem |
| p5.js 2.0 | canvas criativo; padrão do editor após agosto de 2026 | Arte generativa e ensino; revisar material feito para a 1.x |
| Rough.js | estética desenhada à mão em canvas e SVG | Rascunho, croqui, gráfico com cara de caderno |
| PixiJS v8 | WebGL para muitos objetos em alta taxa de quadros | Jogo, partícula e visualização com milhares de peças |
Nenhum deles substitui o player da página pública; eles geram o arquivo que o player serve.
O arquivo que o Remotion gera só vira aula ou anúncio dentro de um player. A regra da casa é dura: a etiqueta video crua, com o atributo controls, nunca entra em página pública. Ela esconde da página a velocidade, a legenda e o estado da tela cheia, e cada navegador desenha os controles do seu jeito.
O laboratório abaixo monta o Vidstack, o player pronto que o curso usa, com a vídeo-aula da trilha 1 e a legenda em português. O painel ao lado lê o estado que o player publica: tempo, velocidade, legenda ativa e tela cheia. Essa leitura liga o botão de compartilhar e o teclado, e o vídeo cru não a oferece.
Peça cada um desses recursos atrás do teste de suporte e do movimento reduzido. Numa página de produto isso vira três pedidos. A nota da avaliação cresce ao entrar na tela, o aviso de estoque entra suave e o contador do painel muda dígito a dígito.
Antes de aprovar a seção, ligue o movimento reduzido no aparelho e recarregue a página. O critério de pronto é que barras, números e avisos continuem visíveis e completos, apenas parados.
Nenhuma biblioteca de gesto ou mola entra sem um pedido de arraste, de mola física ou de sequência longa amarrada à rolagem. Sem esse sinal, ela só acrescenta peso ao que o cliente baixa.
Criar a cena de movimento que marca a página sem pesar
O movimento funcional já está coberto, e resta escolher o único momento em que a página assina, fabricar a cena e regular o que pesa na velocidade.
Um fundo animado no herói derrubou o Lighthouse, a nota de velocidade que o Google dá à página, para 94 no computador e 91 no celular. Quatro parâmetros regulados no mesmo trecho de código devolveram a nota a 100 e 99, sem tirar o movimento da tela.
Uma página inteira comporta um único momento de movimento memorável, e ele mora no herói, a primeira tela que aparece. Cena aqui é esse fundo que se mexe, montado como um aquário digital: uma imagem viva que roda sozinha atrás do texto. Todo o resto da página responde ao que a pessoa faz. Em painel de dados a conta muda: o movimento acompanha cada mudança do dado, como ensina o guia do painel grande, no capítulo de gráficos e painéis.
Ver como texto
Esboço de uma página com a cena de movimento só no herói, a primeira tela: duas manchas de cor se deslocam devagar atrás do título e do botão. As seções de baixo ficam paradas e só respondem à ação da pessoa. Ao lado, as notas de velocidade do Lighthouse no caso citado: com a cena de fábrica, 94 no computador e 91 no celular; com quatro parâmetros regulados no mesmo trecho de código, 100 e 99.
O movimento genérico tem receita conhecida. Cada seção surge transparente e sobe 20 px, sempre com a mesma curva e o mesmo tempo. Os cartões acendem um a cada 0,1 s, e o botão não muda ao ser clicado.
Essa receita vem do agente porque é a mais frequente no material que ele leu. O efeito que deveria impressionar vira o sinal de que ninguém decidiu nada, e o visitante reconhece a ferramenta antes de reconhecer a sua marca.
A convergência tem explicação medida. Modelos ajustados por preferência humana reduzem a variedade do texto que ajudam a produzir, e o modelo base sem esse ajuste não reduz (Padmakumar e He, ICLR, 2024). O mesmo mecanismo puxa o movimento de sites diferentes para a mesma receita.
Na skill frontend-design, o roteiro de projeto visual que o agente lê, a regra cabe numa frase: gaste a ousadia em um lugar só. Um momento bem orquestrado rende a lembrança que dez efeitos espalhados dispersam, porque a atenção de quem visita é uma só.
Movimento ajuda a venda quando responde a uma ação e mostra o que mudou. Abrir um menu, expandir um pedido, confirmar um agendamento: ali o movimento explica a mudança e some. Movimento que dispara sozinho, só para impressionar, atrasa a leitura e gasta a cota da assinatura.
Efeito em cada seção contra uma assinatura e o resto quieto
Efeito em cada seção
Padrão de fábrica
- Fade e deslize de 20 px em toda seção, com a mesma curva e o mesmo tempo
- Hover em cada cartão e escalonamento de 0,1 s por filho, sem ação da pessoa
- Duas ou três cenas WebGL na mesma página, em escala 1 e 60 fps
- Nenhuma regra para quem pediu menos movimento
- A nota de velocidade cai e a pessoa reconhece a ferramenta antes da marca
Uma assinatura e o resto quieto
Escolha com custo pago
- Uma cena no herói, com a cor da marca vinda do DESIGN.md
- Produção, escala 0,5, dpi 1, 30 fps e rótulo acessível no contêiner
- Imagem estática de reserva para quem pediu menos movimento
- Movimento só onde responde a uma ação: abrir, expandir, confirmar
- Nota de velocidade intacta e uma cena que só poderia ser dessa marca
A assinatura se fabrica numa ferramenta de cena, e o Unicorn Studio é a referência da categoria. Ele empilha mais de 75 efeitos, disparados pelo tempo ou pela pessoa, e um agente de shader cria o efeito a partir de uma descrição em prosa.
Shader é o programa que a placa de vídeo roda para pintar cada ponto da tela, como um filtro de foto refeito trinta vezes por segundo. Por isso ele custa energia do aparelho, e é essa conta que os parâmetros abaixo regulam.
A cena sai como componente, a peça pronta que você encaixa na página, para Framer, Webflow, Figma ou aplicativo próprio. O plano gratuito libera todos os efeitos, até oito publicações com o logotipo da ferramenta e vídeo em qualidade média.
O plano pago tira o logotipo da ferramenta, dá licença comercial e exporta a cena em arquivo para você hospedar no próprio domínio. Ele custa US$ 14 por mês no plano anual.
Cada camada de efeito acrescenta uma passagem de shader à conta, e as mais caras são forma 3D, rastro de mouse, bloom, godrays e bokeh. A biblioteca que faz a cena rodar pesa cerca de 50 kB, o que a página baixa uma vez.
Por isso o trecho que embute a cena vem com botões de custo no próprio código. A tabela abaixo dá cada um deles, a faixa de valor, quando usar e o que acontece com a página se ele ficar no valor de fábrica.
| Parâmetro | Faixa | Quando usar | O que acontece se esquecer |
|---|---|---|---|
| data-us-lazyload | true ou false | Cena abaixo da dobra; o herói acima da dobra fica sem | A cena é criada antes de entrar na tela e atrasa a página |
| data-us-production | true | Sempre na página publicada; serve pela CDN (a rede de servidores perto da pessoa) | Os arquivos vêm do servidor de edição, mais lento |
| data-us-scale | 0,25 a 1 | Cena suave fica boa entre 0,5 e 0,75; fundo de herói aguenta 0,25 | Em 1, cada quadro pinta quatro vezes mais pixels que em 0,5 |
| data-us-dpi | 1 a 1,5 | 1 para fundo ambiente; 1,5 é o teto | Em 2 a cena custa quatro vezes mais que em 1 |
| data-us-fps | 30 ou 60 | 30 basta para fundo ambiente; 60 só para mouse e movimento rápido | 60 dobra o trabalho da placa de vídeo por segundo |
| data-us-arialabel e data-us-alttext | texto curto | Sempre; descreve a cena para o leitor de tela | O leitor de tela encontra uma caixa sem nome |
| número de cenas | menos de dez por página | Uma assinatura por página; navegadores param em cerca de 16 contextos WebGL | A cena mais nova deixa de desenhar |
Regule os parâmetros no contêiner antes de medir.
Fonte: Guias de embed e desempenho do Unicorn Studio e unicornstudio-llms.txt, leitura em 8 de setembro de 2026.
O ajuste que devolveu a nota naquele caso foi simples: a cena ficou só na página inicial, com escala 0,25, carregamento adiado e modo de produção ligado. A cena também pausa sozinha quando sai da tela, então ela para de gastar bateria.
As variáveis publicadas aceitam a cor da marca e a intensidade do efeito. Por elas a cena lê o DESIGN.md, o arquivo onde ficam as cores e as regras visuais do negócio, e o fundo passa a ser reconhecidamente seu.
<!-- herói: uma única cena, com os parâmetros de custo regulados -->
<div id="hero-cena"
data-us-project="seu-id-de-projeto"
data-us-lazyload="true"
data-us-production="true"
data-us-scale="0.5"
data-us-dpi="1"
data-us-fps="30"
data-us-arialabel="Onda de vinho tinto em movimento lento sobre o fundo do herói">
<img class="hero-reserva" src="/img/hero-vinho.webp" alt="Taça de vinho tinto sobre a mesa da adega">
</div>
<!-- biblioteca hospedada no seu domínio (permitido pela propriedade sdkUrl) -->
<script src="/js/unicornStudio.umd.js" defer></script>
<style>
#hero-cena .hero-reserva { display: none; }
@media (prefers-reduced-motion: reduce) {
#hero-cena canvas { display: none; }
#hero-cena .hero-reserva { display: block; }
}
</style>Quem ligou o movimento reduzido no aparelho recebe uma imagem parada no lugar da cena. Movimento reduzido é o ajuste que existe em todo celular e computador para quem sente tontura ou enjoo com animação, e respeitá-lo evita perder essa visita.
Para pedido menor, o Framer Marketplace traz peças prontas de rolagem suave e de revelação de texto. No 21st.dev, a categoria que mais cresce é a de heróis animados. O critério vale para todas: uma assinatura por página.
Ver como texto
Dois celulares com a mesma página. No da esquerda, sem preferência de movimento, a cena anima no herói, regulada com modo de produção, escala 0,5, dpi 1 e 30 quadros por segundo. No da direita, com o movimento reduzido ligado no aparelho, o herói mostra uma imagem parada no lugar da cena. O texto e o botão são os mesmos nos dois.
Deixe a assinatura num lugar só, com modo de produção, escala 0,5, dpi 1, 30 quadros por segundo e rótulo acessível. Se a página acumula duas cenas, a assinatura já virou ruído, porque elas dividem a atenção e dobram o custo.
Antes de publicar, rode o Lighthouse no computador e no celular, com a cena ligada e com ela desligada. O critério de pronto é as duas notas voltarem ao patamar de antes da cena.
Se elas não voltarem, corte uma camada de efeito ou baixe a escala e o dpi, e meça de novo antes de pôr no ar.
Guia prático: calibrar o movimento antes de pedir ao agente
Movimento pedido por adjetivo sai errado: suave para você pode ser lento para quem usa. O que o agente executa bem é número: a curva, a duração, o intervalo entre itens, o ponto da rolagem em que a cena começa. Três ferramentas gratuitas do Annnimate, biblioteca de componentes animados do estúdio Good Fella, deixam você achar esses números mexendo num controle, sem cadastro e sem código.
O visualizador de curvas desenha as 31 curvas de aceleração do GSAP, a biblioteca de animação apresentada acima, compara duas lado a lado e copia o resultado em dois formatos: o nome da curva para o GSAP e a função linear() do CSS, que reproduz a mesma curva sem biblioteca nenhuma. O ajuste de escalonamento mostra numa grade o atraso entre um item e o seguinte. O construtor de gatilho de rolagem ajusta início, fim, fixação (o elemento fica parado enquanto a página rola) e o vínculo com a rolagem diante de uma prévia que rola.
A mesma casa publica guias de conceito gratuitos sobre o GSAP, e dois deles viram regra de bolso. O vínculo com a rolagem, chamado scrub, aceita um atraso em segundos: de 0,5 a 1 para revelações e profundidade, de 1,5 a 2 para efeitos de atmosfera, e acima de 2 o movimento parece desligado do gesto. E a propriedade will-change, que avisa o navegador para preparar o elemento com antecedência, ao custo de memória, serve a quem se move o tempo todo; aplicada a uma lista de 100 itens parados, derruba o navegador do celular.
// Os números vêm das ferramentas; o agente só os aplica.
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger);
const mm = gsap.matchMedia();
// O movimento só é registrado para quem não pediu menos movimento.
mm.add("(prefers-reduced-motion: no-preference)", () => {
// Entrada de uma lista: curva, duração e intervalo calibrados antes.
gsap.from(".plano", {
y: 24,
autoAlpha: 0,
duration: 0.6,
ease: "expo.out",
stagger: 0.08,
});
// Imagem que acompanha a rolagem, com meio segundo de atraso.
gsap.to(".foto-capa", {
yPercent: -12,
ease: "none",
scrollTrigger: { trigger: ".capa", start: "top top", end: "bottom top", scrub: 0.5 },
});
});
// Ao sair da condição, o GSAP desfaz as animações do bloco sozinho.Gerente de produto de um aplicativo de finanças pessoais, revisando a página de planos gerada por um agente
Fintech, assinatura
Dor
Os três cartões de plano entravam juntos, com um balanço elástico que a equipe achava infantil para um produto de dinheiro. Cada pedido de ajuste por adjetivo trocava um exagero por outro.
Solução
Ele abriu o visualizador de curvas, comparou a curva elástica com a exponencial de saída, escolheu a segunda com 0,6 segundo e, no ajuste de escalonamento, um intervalo de 0,08 segundo entre os cartões. Passou os três números ao agente.
Resultado do exemplo
A entrada ficou certa na primeira tentativa. Os números foram para o DESIGN.md, e as outras páginas passaram a entrar do mesmo jeito.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Do movimento descrito ao movimento com número
Seis passos. Você decide olhando; o agente recebe valores.
Passo 1: Escolha a curva comparando duas
No visualizador, ponha lado a lado a curva que o agente usou e uma candidata. Curvas de saída, que começam rápido e assentam, servem à maioria das entradas de tela; elástica e de quique chamam atenção para si.
Deu certo quando: Você tem o nome de uma curva e uma duração, escolhidos vendo o movimento.
Erro comum: Aceitar a curva elástica padrão em produto que pede sobriedade.
Passo 2: Copie no formato que o projeto já usa
Projeto com GSAP recebe o nome da curva. Projeto sem biblioteca recebe a função linear() do CSS, que cabe numa transição comum e não acrescenta peso à página.
Deu certo quando: A curva entrou sem instalar dependência nova.
Erro comum: Instalar uma biblioteca de animação para uma única transição de botão.
Passo 3: Acerte o intervalo entre itens
No ajuste de escalonamento, arraste até a sequência parecer uma onda só. Intervalo curto demais vira bloco; longo demais faz a pessoa esperar o último item.
Deu certo quando: A lista inteira termina de entrar em menos de um segundo.
Erro comum: Escalonar 30 itens de uma tabela e segurar o conteúdo que a pessoa veio ler.
Passo 4: Decida se a cena segue a rolagem ou dispara uma vez
Profundidade, barra de progresso e cena fixada seguem a rolagem, com scrub. Revelação de seção dispara uma vez ao entrar na tela, sem scrub.
Deu certo quando: Cada animação de rolagem tem um dos dois modos escolhido, com motivo.
Erro comum: Ligar toda revelação à rolagem e obrigar a pessoa a rolar devagar para ler um título.
Passo 5: Proteja quem pediu menos movimento
Registre as animações dentro da condição de preferência de movimento, como no exemplo. Sem ela, o conteúdo aparece no lugar final, visível e legível.
Deu certo quando: Com a opção de reduzir movimento ligada no aparelho, a página mostra tudo sem animar.
Erro comum: Esconder o conteúdo com opacidade zero no CSS e depender da animação para revelá-lo.
Passo 6: Guarde os números no DESIGN.md
Curva, duração, intervalo e atraso de rolagem entram como regra de movimento do projeto. O próximo pedido cita o arquivo em vez de repetir a calibragem.
Deu certo quando: Uma tela nova sai com o mesmo movimento sem você abrir as ferramentas de novo.
Erro comum: Deixar os valores só no código de um componente, onde o agente não os encontra.
No fim você tem: Quatro números de movimento escolhidos por você, registrados no sistema de design e respeitando quem prefere a página parada.
Os componentes prontos da biblioteca são outra conversa, com preço. São 113 peças em React, Vue e HTML com CSS e JavaScript, das quais 15 gratuitas; o plano individual custava 29 euros por mês em cobrança trimestral, ou 249 euros por ano, em 06/10/2026, com uso comercial liberado e reembolso em 14 dias. A assinatura inclui um servidor MCP, a ponte que deixa o agente buscar um componente pelo nome e colar o código no seu framework. Antes de assinar, faça o teste: o movimento ajuda quem usa a tela a entender o que aconteceu? As ferramentas e os guias gratuitos resolvem a maior parte dos casos de uma página de negócio.
Guia prático: uma timeline só, dirigida por dados e sempre igual
Quando cada efeito da página tem o próprio temporizador, ninguém sabe dizer o que está na tela no segundo 2. O curso de edição estudado em 07/10/2026 monta vídeos como páginas web e, por isso, precisa dessa resposta para cada quadro. A disciplina que ele usa serve igual a uma landing.
São quatro regras. Primeira: toda animação entra numa única timeline criada pausada, e cada bloco visível tem início e duração escritos num objeto de dados, sem setTimeout espalhado. Segunda: anime só transformações (mover, girar, escalar) e opacidade; o verificador do HyperFrames reprova movimento feito com left e top, e o guia de animação do web.dev mostra por quê, com cerca de 50% de quadros perdidos no exemplo com top e left contra cerca de 1% com transform. Terceira: determinismo. Nada de aleatório em tempo de execução; quando precisar de variação, como uma nuvem de pontos, gere com semente fixa antes e grave no código. Quarta: granulado é imagem, não filtro. No material, o ruído feito com filtro SVG vazou e deixou um véu cinza de 14 a 19% sobre a imagem da câmera; uma textura PNG leve resolveu.
A lição: estado da tela como função do tempo. Com isso você consegue pular para qualquer instante, testar, capturar a tela e repetir o resultado sem surpresa.
// Os tempos moram em dados; a timeline nasce pausada e só move transform e opacity.
import { gsap } from "gsap";
const cena = [
{ alvo: ".selo", inicio: 0.0, duracao: 0.5, de: { y: 16, opacity: 0 } },
{ alvo: ".titulo", inicio: 0.3, duracao: 0.7, de: { y: 24, opacity: 0 } },
{ alvo: ".prova", inicio: 1.1, duracao: 0.6, de: { scale: 0.96, opacity: 0 } },
];
export const tl = gsap.timeline({ paused: true });
for (const b of cena) {
tl.from(b.alvo, { ...b.de, duration: b.duracao, ease: "power2.out" }, b.inicio);
}
const reduzir = matchMedia("(prefers-reduced-motion: reduce)").matches;
if (reduzir) tl.progress(1); // estado final, parado
else tl.play();
// Em teste ou captura: tl.seek(2) mostra exatamente o segundo 2.Dos efeitos soltos à cena que se repete
Cinco passos para reorganizar o movimento de uma página que já existe.
Passo 1: Liste tudo que se move e quando
Peça ao agente uma tabela com cada efeito da página: elemento, o que dispara, início, duração e propriedade animada. Isso mostra os temporizadores soltos e as propriedades caras.
Deu certo quando: Você tem a lista completa, com a propriedade de cada efeito.
Erro comum: Esquecer os efeitos de CSS puro, que não aparecem no código JavaScript.
Passo 2: Passe os tempos para um objeto de dados
Cada bloco ganha início e duração num objeto no topo do arquivo, e uma única timeline pausada lê esse objeto, como no bloco acima. Mudar o ritmo vira editar números.
Deu certo quando: Nenhum setTimeout cuida de animação, e o ritmo inteiro cabe numa tela.
Erro comum: Criar uma timeline por componente e voltar a ter vários relógios.
Passo 3: Troque left, top, width e height
Movimento vira deslocamento com transform; crescimento vira escala; aparecer vira opacidade. A posição de repouso fica no CSS.
Deu certo quando: A lista do primeiro passo só tem transform e opacity.
Erro comum: Animar a largura de uma barra de progresso; use scaleX com a origem à esquerda.
Passo 4: Tire o aleatório da hora de abrir
Partículas, posições e atrasos variados são calculados uma vez, com semente fixa, e gravados no código. Granulado de fundo vira uma textura PNG pequena repetida.
Deu certo quando: Duas cargas da página produzem capturas idênticas no mesmo instante.
Erro comum: Usar Math.random no navegador e depois estranhar que o teste visual falha a cada execução.
Passo 5: Teste pulando no tempo
Num teste, chame a timeline com seek em três instantes e tire uma captura de cada um. Com movimento reduzido ligado, confira que a página aparece direto no estado final.
Deu certo quando: As três capturas se repetem igual em toda execução.
Erro comum: Testar só o fim da animação e não ver o elemento que pisca no meio.
No fim você tem: Uma página cujo movimento cabe numa tabela de tempos, usa só propriedades leves e produz a mesma imagem em todo instante, para quem vê e para o teste.
Guia prático: cascata sem script, player que reage à pausa e troca de tela pelo React
A aula colocou o movimento no degrau mais barato da escada. De agosto a outubro de 2026, o degrau do CSS ganhou duas peças nos três navegadores: sibling-index(), que dá a cada item a própria posição para a cascata de entrada, e :paused, que deixa o player mudar de visual quando o vídeo para. No React 19.3, de setembro, o componente ViewTransition ficou estável. Você sai daqui pedindo as três coisas sem biblioteca de animação e com o movimento reduzido respeitado.
Funções, casos de uso e aplicações
Funções
| Função ou recurso | O que faz | Quando usar | Desde |
|---|---|---|---|
| sibling-index() e sibling-count() | Devolvem a posição do elemento entre os irmãos e o total deles, como número que entra em calc() | Atraso da cascata de entrada e largura proporcional sem escrever um nth-child por item; Baseline Newly com o Firefox 154 | 28/08/2026 |
| :paused | Seleciona vídeo e áudio pausados, inclusive o que carregou e ainda não começou | Mostrar a capa e o botão grande de play só com o vídeo parado, sem script; Baseline Newly | 28/09/2026 |
| sizes="auto" em imagem com loading="lazy" | O navegador calcula o tamanho da imagem pela largura real do layout, sem você escrever a lista de sizes | Grade de cartões e galeria abaixo da dobra; virou Baseline Newly com o Safari 27 | 17/09/2026 |
| <ViewTransition> estável (React 19.3) | Anima entrada, saída, troca e elemento compartilhado quando a atualização vem de startTransition, de Suspense ou de useDeferredValue | Filtro de lista, troca de aba e abertura de detalhe em app React; chega junto com o Next.js 16.4 | 09/09/2026 |
| animation em AnimationEvent e TransitionEvent | O evento de fim de animação entrega o objeto Animation que o disparou | Encadear a próxima etapa sem procurar a animação pelo nome; Baseline Newly com o Safari 27 | 17/09/2026 |
| View Transitions com escopo de elemento (Chrome 147) | A transição acontece dentro de um elemento, sem congelar a página inteira | Dois componentes animando ao mesmo tempo; só no Chromium, atrás de teste de suporte | 19/05/2026 |
Newly available quer dizer que o recurso acabou de chegar aos três navegadores: o aparelho que não atualiza ainda não tem.
Casos de uso
Social media de uma confeitaria artesanal em Curitiba que vende encomenda pelo site
Marketing digital
Dor
A página de depoimentos usava uma biblioteca de animação só para os cartões entrarem um após o outro, e o vídeo da cozinha exibia o quadro preto do player quando parado.
Solução
Pediu a cascata com transition-delay em calc(sibling-index() * 60ms) atrás de @supports e dentro de prefers-reduced-motion: no-preference, e a capa sobre o vídeo visível só com :paused.
Resultado do exemplo
O que observar: o peso de JavaScript da página antes e depois, e se os cartões aparecem completos, parados, com o movimento reduzido ligado no celular.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Desenvolvedor de uma plataforma de cursos de idiomas em Campinas, em Next.js
Educação
Dor
O filtro de nível do catálogo trocava a lista de cursos de uma vez, e o aluno perdia de vista o curso que estava olhando.
Solução
Ao subir para o Next.js 16.4 com React 19.3, embrulhou cada cartão em ViewTransition com name igual ao id do curso e passou o filtro para dentro de startTransition. O cartão que fica na lista desliza para a nova posição.
Resultado do exemplo
O que observar: na gravação de sessão ou num teste com cinco alunos, se a pessoa continua no curso que estava olhando depois de filtrar; e o INP do clique no filtro.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Na prática
A página de entrada do /educacao, em src/app/educacao/page.tsx, abre e fecha trilhas com a API de View Transitions do navegador. A função só chama document.startViewTransition quando o navegador tem a API e a pessoa não pediu menos movimento, nem no aparelho nem no botão do portal (data-motion="reduce"). O flushSync obriga o React a aplicar a troca dentro da transição. É o jeito de fazer isso no React 19.2, que o portal usa; o ViewTransition do React 19.3 pode substituir esse embrulho quando o projeto subir de versão. Em src/app/globals.css, a classe .ac-reveal revela blocos pela rolagem, só onde animation-timeline: view() existe.
const withViewTransition = (fn: () => void) => {
const doc = document as Document & { startViewTransition?: (cb: () => void) => void };
const reduce =
typeof window !== "undefined" &&
(window.matchMedia("(prefers-reduced-motion: reduce)").matches ||
document.documentElement.dataset.motion === "reduce");
if (typeof doc.startViewTransition === "function" && !reduce) {
doc.startViewTransition(() => flushSync(fn)); // React aplica a troca dentro da foto
} else {
fn(); // troca seca, mesmo conteúdo
}
};/* Real (globals.css): revela ao rolar só onde há suporte e movimento liberado */
@media (prefers-reduced-motion: no-preference) {
@supports (animation-timeline: view()) {
.ac-reveal {
opacity: 0;
animation: ac-pop-in linear both;
animation-timeline: view();
animation-range: entry 0% cover 24%;
}
}
}
/* Exemplo de campanha: cascata sem nth-child, pela posição de cada cartão */
@media (prefers-reduced-motion: no-preference) {
@supports (transition-delay: calc(sibling-index() * 1ms)) {
.depoimentos > li { transition-delay: calc(sibling-index() * 60ms); }
}
}
/* Capa do vídeo visível só com ele parado */
.player:has(video:paused) .capa { opacity: 1; }Movimento novo sem biblioteca e sem esconder conteúdo
Passo 1: Escreva o estado final primeiro
O cartão visível e parado é a versão de quem não tem o recurso ou pediu menos movimento.
Deu certo quando: Com o CSS de animação removido, a página continua completa.
Erro comum: Começar com opacity: 0 fora da consulta de suporte e sumir com o conteúdo no navegador antigo.
Passo 2: Ponha a animação atrás de duas perguntas
prefers-reduced-motion: no-preference e @supports do recurso, nessa ordem, como na .ac-reveal do portal.
Deu certo quando: Cada bloco animado tem as duas condições.
Erro comum: Respeitar o sistema e esquecer o botão de movimento do próprio site.
Passo 3: Troque o script pelo recurso que já é Baseline
sibling-index() no lugar do atraso calculado em JavaScript; :paused no lugar do ouvinte de pause.
Deu certo quando: Um arquivo de JavaScript a menos para manter.
Erro comum: Usar recurso Newly sem reserva quando o público tem muito aparelho sem atualização.
Passo 4: No React 19.3, deixe a transição com o React
ViewTransition dispara com startTransition; atualização urgente fora dele não anima.
Deu certo quando: A troca anima sem flushSync nem chamada manual à API do navegador.
Erro comum: Embrulhar a lista em ViewTransition e esquecer o startTransition no clique.
No fim você tem: Cascata, player e troca de tela animados com CSS e React, com a página inteira visível para quem não quer movimento.
Armadilhas
Movimento que soma contra movimento que esconde
Evite
Coluna a evitar
- Biblioteca de animação só para a cascata de entrada da lista
- Item escondido por padrão que só aparece se a animação rodar
- name repetido em dois ViewTransition na mesma tela
- View Transition com escopo de elemento sem teste de suporte: só o Chromium tem
Prefira
Coluna recomendada
- sibling-index() atrás de @supports, com os itens aparecendo juntos sem ele
- Estado final visível e animação só dentro de prefers-reduced-motion: no-preference
- name único por item, como o id do curso ou do produto
- Transição do documento inteiro, que já roda nos três navegadores, como base
A troca de tela animada ficou nativa
O React 19.3, de 09/09/2026, tornou estáveis as View Transitions, que animam a passagem de uma tela para outra. Cinco dias depois a biblioteca Motion lançou a versão 13.4 com um componente para usar esse recurso, e em 02/10 chegou à versão 14. Animação de troca de tela deixou de exigir peça extra; o critério de utilidade continua com você.

Ver como texto
Página Changelog da Motion, em amarelo e preto, que reúne lançamentos de Motion, Motion UI, Motion AI Kit e Motion Studio e mostra o contador de 968 releases. A primeira entrada, de 20/10/2026, lista novidades como reordenação de itens pelo teclado no componente Reorder e correções de elementos que pulavam.

Ver como texto
Página do MDN Web Docs sobre o recurso prefers-reduced-motion, com o selo Baseline Widely available, um aviso de que o exemplo da página tem movimento que pode incomodar pessoas com distúrbios vestibulares e o texto que explica que ela detecta quando a pessoa ativou no aparelho a opção de reduzir movimento não essencial.

Ver como texto
Página de referência do componente ViewTransition na documentação do React 19.3, com a frase que diz que ele anima uma árvore de componentes com Transitions e Suspense, um exemplo de código que importa ViewTransition de react e envolve um div, e a lista de usos, como animar a entrada e a saída de um elemento, um elemento compartilhado e a reordenação de itens numa lista.
- Etapa 1 de 4: Mostra mudança de estado?
Item adicionado, aba trocada, erro apontado
- Etapa 2 de 4: Orienta o olhar?
Leva a atenção para o que mudou
- Etapa 3 de 4: Respeita o pedido de menos movimento?
Desliga ou vira um esmaecer curto
- Etapa 4 de 4: Aprovada
Entra na página com duração definida
Ver como texto
- Mostra mudança de estado?: Item adicionado, aba trocada, erro apontado
- Orienta o olhar?: Leva a atenção para o que mudou
- Respeita o pedido de menos movimento?: Desliga ou vira um esmaecer curto
- Aprovada: Entra na página com duração definida
Faça agora: ligue o "reduzir movimento" e visite o site
Passo 1: No iPhone, vá em Ajustes, Acessibilidade, Movimento e ative Reduzir Movimento. No Android, em Configurações, Acessibilidade, ative Remover animações.
Deu certo quando: A animação de abrir aplicativos do próprio celular fica mais simples.
Passo 2: Abra o site e role a página principal até o fim.
Deu certo quando: Nada desliza, gira ou pisca de forma chamativa.
Erro comum: Testar com a preferência desligada e achar que está tudo certo.
Passo 3: Anote cada animação que continuou forte, com o lugar da página.
Deu certo quando: Uma lista com seção e o que se move.
Passo 4: Desligue a preferência e passe as animações da lista pelo teste de utilidade acima.
Deu certo quando: Cada uma recebe aprovada ou cortar.
No fim você tem: Uma lista de animações a manter e a cortar, com o pedido de respeitar a preferência do aparelho.
Aplicar os recursos ao projeto
Ver como texto
O limite visível dispara uma decisão
Uma região representa a área visível. Um bloco permanece fora, outro cruza o limite e outro está dentro; observar esse encontro pode acionar carregamento ou pausa.
Ver como texto
Linha do tempo do GSAP com três trechos em ordem: recebimento, conferência e separação, cada um marcado por um rótulo com bandeirinha. Uma agulha mostra o ponto atual, no meio da conferência. Embaixo, três controles: pausar, recomeçar e saltar até um rótulo. Na última caixa, a regra: o processo também fica escrito em texto, porque ninguém deve esperar a animação para entender.
Ver como texto
Sequência e estado respondem de formas distintas
Uma sequência percorre quadros em ordem. Uma máquina de estados escolhe a próxima apresentação a partir de um evento, como sucesso ou erro.
Ver como texto
Quatro tempos da View Transitions API, de cima para baixo. Um: o navegador fotografa a vista antiga, uma lista de produtos. Dois: o seu código faz a mesma atualização de dados que faria de qualquer jeito. Três: o navegador fotografa a vista nova, o detalhe do produto. Quatro: o navegador conduz a passagem entre as duas fotos. Ao lado, em tracejado, o caminho sem a API: a mesma troca acontece direta, sem animação.
Ver como texto
Dois percursos chegam à mesma informação
Um percurso inclui estados intermediários, e outro faz uma atualização direta. Ambos chegam ao mesmo estado final legível; a redução de movimento não remove a confirmação.
Ver como texto
Três faixas. Na primeira, transition: uma linha liga o estado inicial ao estado final, sem paradas. Na segunda, keyframes: a linha tem paradas em zero, quarenta e cem por cento. Na terceira, o custo: animar opacidade e transformação é barato, em verde; animar largura e posição é caro, em vermelho, porque obriga o navegador a refazer o layout a cada quadro.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoClaude Code: do zero à prática
- Agent Skills e SKILL.md: instruções reutilizáveissugerido pelo grafoApresenta o conceito “Skill (Agent Skill)”, usado em “Projetar movimento, assinatura e narrativas por rolagem”.
- Comparar o VS Code com as alternativassugerido pelo grafoApresenta o conceito “Cursor”, usado em “Projetar movimento, assinatura e narrativas por rolagem”.
- CursoSíntese e didática com IAsugerido pelo grafoDepois de escolher a informação essencial e desenhar hierarquia, gráficos e fluxos compreensíveis, o aluno pode aplicar esses critérios às interfaces do curso de frontend. A ponte conecta clareza da mensagem, acessibilidade e decisões de apresentação.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Astra profundoProjetar animações que orientam a açãoExaminar conexões de Projetar animações que orientam a ação
- Vídeo com IA: do roteiro à publicaçãoMonte cenas como páginas da web e aprove na prévia (HyperFrames)Examinar conexões de Monte cenas como páginas da web e aprove na prévia (HyperFrames)
- MCP e Chrome: agentes de IA no navegadorQuando ler a estrutura da página e quando usar imagemExaminar conexões de Quando ler a estrutura da página e quando usar imagem
- Software e IA para executivosOnde a tela é montada: no servidor ou no celularExaminar conexões de Onde a tela é montada: no servidor ou no celular
Terminou a leitura?
Você está aqui: capítulo 12 de 35
0 de 35 concluídos
- Próximo · Capítulo 13 de 35 · 27 minPreparar imagens, ícones e vídeo para a webLer o capítulo 13 sem concluir
Marque como concluído para o capítulo contar no seu painel e no certificado.
- Anterior · Capítulo 11 de 35 · 29 minAdaptar o layout ao celular e ao contêinerVoltar para o capítulo 11
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Laboratórios ao vivo deste curso
Cada laboratório monta a biblioteca real dentro da aula, com controles para você mexer e o código do exemplo para copiar. O texto de reserva descreve a demonstração para quem lê sem JavaScript. O link abre o capítulo já no ponto do laboratório.
Base UI
Prenda o foco num diálogo sem escrever o comportamento
Abra a janela Agendar visita, percorra os campos com Tab, feche com Esc e acompanhe no painel onde o foco está e para onde ele volta.
Pacote
Abrir no capítuloConstruir componentes, usar o registro e publicar o catálogo@base-ui/reactLucide e Iconify
Mantenha uma família de ícones coerente e nomeie cada botão
Mude tamanho, traço e cor da barra, veja o símbolo do Iconify acompanhar o Lucide e rode a auditoria de nomes acessíveis.
Pacote
Abrir no capítuloProjetar uma linguagem de ícones e ilustraçãolucide-react, @iconify/reactMotion
Testar os três sinais que autorizam o terceiro degrau
Reproduza a entrada em sequência, aperte o botão com mola e arraste o cartão; ajuste rigidez e amortecimento e veja o que muda.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagemmotionVidstack
Ver o que separa um player de um vídeo cru
Dê o play, troque a velocidade e ligue a legenda; o painel ao lado mostra o estado que o player publica e que a etiqueta crua esconde.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagem@vidstack/reactcmdk
Achar um destino entre quarenta digitando três letras
Abra a paleta, digite fat e escolha um item só pelo teclado; o painel embaixo conta o que o filtro deixou passar e quanto tempo levou.
Pacote
Abrir no capítuloConstruir formulários e estados de interaçãocmdknumber-flow
Animar indicadores que mudam ao vivo com formato pt-BR
Veja três indicadores fictícios rolarem a cada troca e compare com o número em texto puro. Pause, reinicie e observe o separador de milhar.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisão@number-flow/reactApache ECharts
Medir o custo de desenhar 200 mil pontos com o ECharts
Troque o tipo de gráfico e o volume de pontos, leia o tempo de desenho e alterne o eixo em zero. Mude o tema do site e veja as cores refazerem.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartsApache ECharts
Painel grande com visões coordenadas
Clique num canal para filtrar todas as visões, troque a densidade entre 6, 9 e 12 visões, alterne tema e movimento e abra a tela cheia.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartssharp e svgo
Escolher a variante certa da imagem e conferir o teto de 150 KB
Arraste a largura da tela simulada, troque a densidade entre 1x e 2x e veja qual arquivo o navegador escolhe, quanto ele pesa e se cabe no orçamento.
Pacote
Abrir no capítuloValidar desempenho, autenticação e segurançasharp, svgoReact Flow (xyflow)
Disparar um pedido e ver o orquestrador distribuir, conferir e responder
Alterne paralelo e sequencial, ligue e desligue a verificação e use a medição real; observe o tempo de parede em cada combinação.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robô@xyflow/reactGSAP, Web Workers e number-flow
Dividir mil tarefas entre trabalhadores reais e correr três ritmos de geração
Execute com um trabalhador, depois com quatro e oito, e compare o tempo; em seguida percorra a corrida e separe a espera inicial do ritmo.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôgsap, @number-flow/reactThree.js com React Three Fiber, drei, Rapier e XR
Carregar o braço robótico, ver a física trabalhar e entrar na cena com o visor
Carregue a cena pelo botão, inicie o ciclo, mostre os ângulos das juntas, troque a câmera e a velocidade; com visor, entre em realidade virtual.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôthree, @react-three/fiber, @react-three/drei, @react-three/rapier, @react-three/xrMotion
Ver quatro agentes em raias trocando mensagens e a revisão devolvendo um trecho
Reproduza os 60 s de modelo, percorra o tempo pelo controle e esconda as mensagens para comparar a leitura; repare no tempo de parede contra a soma.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinamotionMediaRecorder, Canvas 2D e Long Animation Frames (plataforma)
Medir o quadro da cena e gravar seis segundos dela em vídeo
Suba as partículas, force um bloqueio de 300 ms e leia o medidor; depois grave seis segundos, veja o codec escolhido e baixe o arquivo.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinasem pacotesigma.js, graphology com ForceAtlas2 e cosmos.gl
Ver o grafo real do curso e um grafo de milhares de nós se organizarem em aglomerados
Rode o layout no grafo real, passe o mouse pelos nós e busque uma entidade; troque para 20 mil nós e leia o medidor; depois carregue o modo massivo na placa de vídeo.
Pacote
Abrir no capítuloAnimar um grafo de conhecimento amplo em movimentosigma, graphology, graphology-layout-forceatlas2, graphology-generators, @cosmos.gl/graph
Capítulos vizinhos em Frontends com Vibecoding
- 10Projetar menus, popovers e modais acessíveis
- 11Adaptar o layout ao celular e ao contêiner
- 12Projetar movimento, assinatura e narrativas por rolagem
- 13Preparar imagens, ícones e vídeo para a web
- 14Construir profundidade e dirigir a montagem de vídeo