Início CSS Componentes Animações 01 - Tema e tokens 02 - Tipografia 03 - Cores semânticas 04 - Paleta estendida 05 - Ícones 06 - Espaçamento 07 - Bordas 08 - Sombras 09 - Breakpoints 10 - Container 11 - Grid 12 - Flex 13 - Posição 14 - Quebra de texto 15 - Zoom 16 - Object-fit 17 - Proporção 18 - Filtros 19 - Superfície 20 - Interação 21 - Botão 22 - Avatar 23 - Badge 24 - Breadcrumb 25 - Card 26 - Divider 27 - Timeline 28 - Skeleton 29 - Stepper 30 - Segmentado 31 - Alerta (inline) 32 - Tabs 33 - Dropdown 34 - Navbar 35 - Sidebar 36 - Scrollspy 37 - Voltar ao topo 38 - Paginação 39 - Accordion 40 - Text Carousel 41 - Arrastar (Draggable) 42 - Chip 43 - Panel (drawer) 44 - Modal 45 - Tooltip 46 - Toast (SW.Alert) 47 - Progress 48 - Rating (estrelas) 49 - LGPD / Cookies 50 - Campo de formulário 51 - Validação inline (matinp) 52 - Select (JS) 53 - Máscara de campo 54 - Validação de formulário 55 - Textarea auto-resize 56 - Contador de caracteres 57 - Upload de arquivo 58 - Editor de texto rico 59 - Recorte de imagem 60 - Lightbox 61 - Slider de imagens 62 - Feed do Instagram 63 - Tabela avançada 64 - Infinite Scroll 65 - AJAX declarativo 66 - Cotação de moedas 67 - Máquina de escrever 68 - Realce de código 69 - Tema dia/noite 70 - Conteúdo responsivo 71 - Lazy load de imagem 72 - Preloader 73 - Efeitos de entrada 74 - Texto animado 75 - Mini-componentes animados 76 - Cascade 77 - Pin (prende na tela) 78 - Fixed (gruda no topo) 79 - Track (fileira horizontal) 80 - Sections (tela cheia) 81 - Frames (sprite no scroll) 82 - SVG Draw (traço) 83 - Motion Path 84 - Tilt (3D no mouse) 85 - Magnetic (ímã) 86 - Glow (segue o mouse) 87 - Cursor personalizado 88 - Canvas (fundo generativo) 89 - Lottie 90 - Rive 91 - Countdown 92 - Counter 93 - Transição de página
81
Frames (sprite no scroll) Animações
Troca de QUADRO presa ao scroll — não anima suave, pula de imagem em imagem. "Gira o produto 360°" clássico.
O que é
Em vez de vídeo contínuo, mostra uma sequência de imagens (fotos de um produto girando, por exemplo) e troca de quadro conforme a posição do scroll.
Como funciona
Aceita duas fontes: um sprite-sheet único (grade de quadros num arquivo só) ou várias imagens separadas, uma por quadro.
Exemplos
A ideia — um quadro por posição de scroll
Ao vivo
Não é vídeo nem animação suave: ele troca de imagem conforme você rola, como folhear. É o efeito de "girar o produto 360°" das lojas.
Precisa dos arquivos reais (um sprite ou a sequência de fotos), por isso a demonstração aqui seria falsa — o código ao lado é o completo.
<!-- 1) sprite-sheet: uma imagem com a grade de quadros -->
<div sw-ani="frames" sw-ani-frame-sprite="6x4">
<div sw-ani-frame-stage></div>
</div>
<!-- 6 colunas × 4 linhas = 24 quadros -->
Imagens separadas
Ao vivo
Se você tem uma pasta com frame-01.jpg, frame-02.jpg…, não precisa montar sprite: liste as imagens e marque cada uma com sw-ani-frame.
<div sw-ani="frames">
<div sw-ani-frame-stage>
<img sw-ani-frame src="frame-01.jpg" alt="">
<img sw-ani-frame src="frame-02.jpg" alt="">
<img sw-ani-frame src="frame-03.jpg" alt="">
<!-- … -->
</div>
</div>
Usando só parte da grade
Ao vivo
Sprite de 6×4 dá 24 quadros. Se a sua sequência tem 20 e as últimas 4 posições estão vazias, o sw-ani-frame-count evita que o produto "suma" no fim da rolagem.
<div sw-ani="frames" sw-ani-frame-sprite="6x4" sw-ani-frame-count="20">
<div sw-ani-frame-stage></div>
</div>
Todos os quadros precisam estar carregados pra troca ser instantânea — é o preço do efeito. Um giro 360° com 36 fotos grandes pode passar de vários MB.
Na prática: comprima bem, use uma resolução só o suficiente pro tamanho exibido, e prefira 24–36 quadros a 60.
<!-- sprite comprimido costuma ser a opção mais leve:
1 requisição em vez de 24, e o navegador decodifica uma vez só -->
<div sw-ani="frames" sw-ani-frame-sprite="6x4">
<div sw-ani-frame-stage></div>
</div>
Atributos
sw-ani-frame-sprite
grade do sprite-sheet — ex.: "6x4" (6 colunas × 4 linhas = 24 quadros)
sw-ani-frame-count
quantos quadros usar, quando não quiser a grade inteira
sw-ani-frame-stage
o palco onde o quadro aparece
sw-ani-frame
cada imagem, quando você usa fotos separadas em vez de sprite
Variantes
sprite-sheet
uma imagem só, com todos os quadros numa grade — menos requisições
imagens separadas
um arquivo por quadro — mais simples de gerar e de trocar
Requisitos
Precisa do pacote swcore.motion.min.css/js.
Limitações — o que ele não faz
Todos os quadros ficam na página: é o componente mais pesado da família. Meça o total antes de publicar. A troca é seca, de imagem em imagem — se você quer movimento contínuo e suave, o caminho é vídeo preso ao scroll, não este componente.