Transição de página Animações
Tira o "piscar branco" entre uma página e outra: uma cortina cobre a tela, a próxima página carrega por trás e a cortina sai. sw-ani-page="wipe" no link.
O que é
Quando a pessoa clica num link do seu site, em vez do corte seco (tela branca, página nova aparecendo aos pedaços), uma cortina animada cobre a tela com um "carregando" (e a sua logo, se quiser). Enquanto isso a próxima página já é baixada. Ao abrir a página nova, a cortina sai com o efeito de entrada. São 17 efeitos: varrer, desbotar, círculo, diagonal, onda, deslizar, girar, desfocar…
Você coloca sw-ani-page nos links internos, com o efeito de saída|entrada (ex.: wipe|fade = cobre varrendo, revela desbotando; um nome só vale para os dois). Ao passar o mouse no link, o SWCore já pede a página para o navegador ir adiantando. Ctrl+clique, "abrir em nova aba" e links de download continuam normais. A página de destino também precisa ter o SWCore com o pacote de animação, para fazer a cortina sair.
Quando usar
- Site institucional, portfólio, landing com várias páginas: a navegação fica com cara de aplicativo.
- Site com a marca forte: a cortina na cor da marca e a logo no meio viram assinatura visual.
- Evite em sistema/painel com muita navegação rápida: a cortina acrescenta cerca de 1 segundo a cada clique.
Comece aqui
-
1
Coloque o SWCore e o pacote de animação em todas as páginas (o
swcore.motion.min.jsvem antes doswcore.min.js).<!-- no <head> --> <link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.css"> <link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.motion.min.css"> <!-- no fim do <body>: o motion ANTES do swcore --> <script src="https://swcore.sanweb.com.br/dist/2.1.0/swcore.motion.min.js"></script> <script src="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.js"></script> -
2
Coloque
sw-ani-pagee o efeito no link. Aqui, um botão que só simula (clique para ver a cortina — você não sai desta página):<a href="/servicos" sw-ani-page="wipe">Serviços</a>
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. Cortinas com forma
Clique em cada botão: ele toca a cortina de verdade, cobrindo esta página, e sai. No seu site o mesmo atributo vai no link (<a href>) e aí sim a página troca por trás. Botões e links com href="#" sempre só simulam.
<a href="/servicos" sw-ani-page="wipe">Serviços</a>
<a href="/servicos" sw-ani-page="fade">Serviços</a>
<a href="/servicos" sw-ani-page="curtain">Serviços</a>
<a href="/servicos" sw-ani-page="circle">Serviços</a>
<a href="/servicos" sw-ani-page="diagonal">Serviços</a>
<a href="/servicos" sw-ani-page="wave">Serviços</a>
2. Deslizar
A cortina entra por um lado e sai pelo outro. slide sozinho é o mesmo que slide-left.
<a href="/servicos" sw-ani-page="slide-left">Serviços</a>
<a href="/servicos" sw-ani-page="slide-right">Serviços</a>
<a href="/servicos" sw-ani-page="slide-up">Serviços</a>
<a href="/servicos" sw-ani-page="slide-down">Serviços</a>
3. Crescer, girar e desfocar
scale = scale-up. blur, blur-in e blur-out são o mesmo efeito com três nomes.
<a href="/servicos" sw-ani-page="scale">Serviços</a>
<a href="/servicos" sw-ani-page="scale-down">Serviços</a>
<a href="/servicos" sw-ani-page="flip">Serviços</a>
<a href="/servicos" sw-ani-page="flip-x">Serviços</a>
<a href="/servicos" sw-ani-page="blur">Serviços</a>
4. Saída diferente da entrada (saída|entrada)
O primeiro nome é como a cortina cobre a página atual; o segundo, como ela sai revelando a página nova.
<a href="/servicos" sw-ani-page="wipe|fade">Serviços</a>
<a href="/servicos" sw-ani-page="circle|curtain">Serviços</a>
<a href="/servicos" sw-ani-page="slide-up|scale-down">Serviços</a>
5. Foto no lugar da cor (sw-ani-page-bg)
Em vez da cor lisa, a cortina mostra uma foto (com um véu escuro por cima para o "carregando" aparecer). Funciona em todos os efeitos, inclusive na onda.
<a href="/servicos" sw-ani-page="wipe" sw-ani-page-bg="https://picsum.photos/id/1015/1200/800">Serviços</a>
<a href="/servicos" sw-ani-page="wave" sw-ani-page-bg="https://picsum.photos/id/1015/1200/800">Serviços</a>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| No link | ||
sw-ani-page | Liga a transição neste link (ou botão). Valor: efeito ou saída|entrada. Sem valor ou nome errado: wipe. | <a href="/sobre" sw-ani-page="wipe|fade"> |
sw-ani-page-bg | Foto na cortina, no lugar da cor. | sw-ani-page-bg="/img/cortina.jpg" |
data-sw-preview | Num link de verdade: só simula a cortina, sem sair da página. | <a href="/sobre" sw-ani-page="wipe" data-sw-preview> |
| Efeitos com forma | ||
wipe | Cobre de baixo para cima e sai para cima. | sw-ani-page="wipe" |
fade | Aparece e some desbotando. | sw-ani-page="fade" |
curtain | Abre do centro para os lados; sai fechando no meio. | sw-ani-page="curtain" |
circle | Círculo crescendo do centro; sai encolhendo. | sw-ani-page="circle" |
diagonal | Faixa inclinada varrendo da esquerda para a direita. | sw-ani-page="diagonal" |
wave | Borda ondulada subindo. | sw-ani-page="wave" |
| Efeitos de deslizar | ||
slide-left (ou slide) | Entra pela esquerda, sai pela direita. | sw-ani-page="slide-left" |
slide-right | Entra pela direita, sai pela esquerda. | sw-ani-page="slide-right" |
slide-up | Entra por baixo, sai por cima. | sw-ani-page="slide-up" |
slide-down | Entra por cima, sai por baixo. | sw-ani-page="slide-down" |
| Efeitos de escala, giro e desfoque | ||
scale (ou scale-up) | Cresce do centro; sai crescendo e sumindo. | sw-ani-page="scale" |
scale-down | Vem grande e encolhe até cobrir; sai encolhendo. | sw-ani-page="scale-down" |
flip | Gira como uma porta (eixo vertical). | sw-ani-page="flip" |
flip-x | Gira como uma persiana (eixo horizontal). | sw-ani-page="flip-x" |
blur (ou blur-in, blur-out) | Desfocado, entra nítido, sai desfocando. | sw-ani-page="blur" |
| No seu CSS / HTML | ||
--sw-page-bg | Cor da cortina. Padrão: a cor primária do site. | :root { --sw-page-bg: #0f172a; } |
<template id="sw-page-loader"> | Sua logo no meio da cortina, acima do "carregando" (ela fica branca automaticamente). | <template id="sw-page-loader"><img src="/logo.svg" alt=""></template> |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<!-- no fim do <body>, ANTES do swcore.motion.min.js -->
<script>
document.querySelectorAll('a[href]').forEach(function (link) {
var href = link.getAttribute('href') || '';
if (href.startsWith('#') || link.hasAttribute('download') || link.target) return;
if (new URL(link.href, location.href).origin === location.origin) {
link.setAttribute('sw-ani-page', link.getAttribute('sw-ani-page') || 'fade|fade');
}
});
</script>
<style>
:root { --sw-page-bg: #0f172a; } /* cor da cortina */
</style>
<!-- em qualquer lugar do <body> -->
<template id="sw-page-loader">
<img src="/img/logo.svg" alt="">
</template>
<nav>
<a href="/" sw-ani-page="curtain|fade">Início</a>
<a href="/servicos" sw-ani-page="curtain|fade">Serviços</a>
<a href="/contato" sw-ani-page="curtain|fade">Contato</a>
</nav>
<!-- Já vem pronto: o swcore.motion.min.js cobre a página nova assim que é lido
e o swcore.motion.min.css esconde o resto enquanto isso. Não precisa escrever nada.
Página MUITO grande (muito HTML antes dos scripts do fim do <body>)?
Para garantia total, antecipe só a classe, no <head>: -->
<script>
try { if (sessionStorage.getItem('sw-page-effect')) document.documentElement.classList.add('sw-page-pending'); } catch (e) {}
</script>
<!-- ATENÇÃO: esse script do <head> só em páginas que carregam o swcore.motion.min.js
— é ele que tira a classe (sem ele a página ficaria invisível). -->
<button type="button" sw-btn="suc" id="salvar">Salvar</button>
<script>
document.getElementById('salvar').addEventListener('click', async () => {
await SWMotion.transition('circle|fade'); // cobre e sai
// aqui a cortina já saiu
});
</script>
API (JavaScript)
SWMotion.transition("saída|entrada")wave) e, no 2º argumento, uma imagem de fundo: SWMotion.transition("wave", "/foto.jpg"). Nome errado vira wipe.SWMotion.refresh()sw-ani-page que entraram na página depois do carregamento.Precisa de quê
swcore.motion.min.jseswcore.motion.min.cssem todas as páginas (a de origem cobre, a de destino revela).- Links para páginas do mesmo site.
Cuidados — erros comuns
- Link para outro site (Instagram, WhatsApp, outro domínio) com
sw-ani-pageabre normal, sem cortina: a transição só existe entre páginas do mesmo site. - A página de destino sem o pacote de animação fica "presa" atrás de nada: a cortina some junto com a página antiga e a nova aparece seca. Coloque o SWCore em todas.
<button>comsw-ani-pagenunca navega, só simula. Para trocar de página use<a href>.- Link com
target="_blank"oudownloadignora a transição (e isso é o certo). - Nome de efeito errado não dá erro: vira
wipe.
O que ele não faz
- Acrescenta perto de 1 segundo por navegação (cobrir + carregar + sair).
- Não funciona com o botão "voltar" do navegador: a página anterior aparece sem cortina.
- O texto "Carregando" é fixo, em português.

