Fixed (gruda no topo) Animações
Um elemento que gruda no topo da tela enquanto o bloco dele passa — e vai embora junto quando o bloco acaba. Sem prender a página.
O que é
É para quando você quer que algo "acompanhe" a leitura: o título de uma seção longa, uma coluna de resumo ao lado do texto, a barra de filtros de uma lista. Você coloca sw-ani="fixed" no elemento e ele gruda no topo da tela enquanto o bloco em que ele está (o pai) ainda está passando. Quando o bloco termina, ele sai junto. A página continua rolando normalmente — diferente do Pin, que para a página.
Por baixo é o position: sticky do próprio navegador: leve, sem cálculo pesado. Ele gruda no topo da janela e respeita o tamanho do pai. Faz parte do pacote de animação — se você não usa esse pacote, a classe stk do arquivo principal faz a mesma coisa.
Quando usar
- Título da seção que acompanha enquanto a pessoa lê uma lista longa (cardápio, perguntas frequentes).
- Coluna lateral com resumo, preço ou botão "Comprar" ao lado de um texto comprido.
- Barra de filtros de uma loja que fica à mão enquanto a pessoa desce pelos produtos.
- Se você quer parar a página por um trecho para animar algo, o certo é o Pin.
Comece aqui
-
1
Coloque o SW Core e o pacote de animação. O JS da animação vai antes do
swcore.min.js.<link rel="stylesheet" href="swcore/swcore.min.css"> <link rel="stylesheet" href="swcore/swcore.motion.min.css"> <!-- fim do <body> --> <script src="swcore/swcore.motion.min.js"></script> <script src="swcore/swcore.min.js"></script> -
2
Coloque o elemento que vai grudar dentro do bloco que ele acompanha, junto com o conteúdo longo.
<section> <h2 sw-ani="fixed" class="bg-sur p-m">Bolos</h2> …lista longa de bolos… </section>
Todas as variações
Cada quadro abaixo é o componente de verdade, rodando. O código embaixo é exatamente o que está no quadro: copie e cole.
1. Onde ele gruda
Role a página devagar sobre estes quadros: a faixa colorida gruda no topo da janela enquanto os trechos passam, e vai embora quando o quadro acaba.
<div>
<div sw-ani="fixed" class="bg-g-pri p-m r-m fw6">Cardápio · Bolos</div>
<div class="flx f-cl gap-3 mt-3">
<div class="bg-sur bd p-g r-m">Bolo 1</div>
<div class="bg-sur bd p-g r-m">Bolo 2</div>
…
</div>
</div>
R$ 149/mês
Assinar<div class="l l-2 gap-4">
<div> <!-- a coluna (alta, pela grade) -->
<div sw-ani="fixed" class="bg-sur bd p-g r-m">
<strong>Plano Completo</strong>
<p>R$ 149/mês</p>
<a href="/assinar" sw-btn="pri p">Assinar</a>
</div>
</div>
<div>…texto longo…</div>
</div>
<div>
<div class="stk bg-g-sec p-m r-m fw6">Filtros: Todos · Promoção · Novidades</div>
<div>…lista de produtos…</div>
</div>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Atributo | ||
sw-ani="fixed" | Gruda o elemento no topo da janela enquanto o pai dele passa pela tela. Sem outras opções. | <div sw-ani="fixed"> |
| Alternativa no arquivo principal (sem pacote de animação) | ||
stk | Classe: position: sticky no topo (0). Mesmo resultado do fixed. | class="stk" |
stk-nav | Classe: igual, mas gruda logo abaixo da navbar fixa (usa a altura --sw-navbar-h, padrão 7rem). | class="stk-nav" |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
Entregas
Entregamos em até 2 dias úteis na capital.
Pedidos até as 15h saem no mesmo dia.
O frete é grátis acima de R$ 199.
Trocas
Você tem 7 dias para trocar, sem justificar.
A troca é feita na loja ou pelo correio.
O reembolso cai em até 5 dias.
<div>
<h3 sw-ani="fixed" class="bg-sur bd p-m r-m">Entregas</h3>
<p>…</p>
</div>
<div>
<h3 sw-ani="fixed" class="bg-sur bd p-m r-m">Trocas</h3>
<p>…</p>
</div>
<!-- cada título acompanha só o seu bloco e vai embora quando o próximo chega -->
<div class="l l-2 gap-6">
<div>
<img sw-ani="fixed" src="/produto/tenis.webp" width="800" height="800" alt="Tênis de corrida azul">
</div>
<div>
<h1>Tênis Corrida Leve</h1>
<p>…descrição longa, medidas, avaliações…</p>
</div>
</div>
Precisa de quê
swcore.min.css+swcore.motion.min.css, eswcore.motion.min.jsantes doswcore.min.js.- Sem o pacote de animação, use a classe
stk(vem noswcore.min.css).
Cuidados — erros comuns
- "Não gruda": procure um elemento em volta com
overflow: hidden,overflow: autoouoverflow: scroll. Isso é regra do navegador para osticky: ele passa a grudar dentro daquele elemento, não na tela. - Ele só acompanha enquanto o pai está passando. Se o pai tem a mesma altura que ele, não sobra espaço para grudar.
- Numa grade (
l l-2), coloque ofixeddentro de uma<div>da coluna, como no exemplo. Direto como item da grade, ele estica na altura da linha e não tem para onde andar. - Dê um fundo a ele (
bg-sur,bg-g-pri…): transparente, o conteúdo que passa por baixo aparece através. - Com uma navbar fixa no topo, o elemento fica escondido atrás dela: use a classe
stk-nav, que gruda logo abaixo da navbar.
O que ele não faz
- Sempre gruda no topo (0). Para outra distância do topo, use
stk-navou o seu próprio CSS comtop. - Não anima nada enquanto está grudado. Para animar peças presas à rolagem, use o Pin.

