Introdução
Uma coisa incrível sobre como trabalhar com animações no Svelte é que você não precisa baixar pacotes extras. Animações e transições vêm integradas com Svelte. Isso significa que você pode adicionar interações poderosas e agradáveis aos aplicativos sem aumentar seu tamanho. Isso também ajuda muito a aumentar a velocidade e o desempenho do seu aplicativo.
Neste artigo, irei explicar como as transições e animações funcionam no Svelte. Também forneço algumas demonstrações nas quais aplicamos o conhecimento que adquirimos na prática.
Primeiros passos
Começamos instalando o pacote sveltejs
com o seguinte código:
npx degit sveltejs/template my-svelte-project
Transições em Svelte
Svelte oferece sete funções de transição: fade
, blur
, fly
, slide
, scale
, draw
e crossfade
. Para usar qualquer uma dessas funções, você deve importá-las do módulo svelte/transição
.
Abaixo está uma demonstração da transição que faremos para um carrossel de imagens:
Vamos ver como adicionar transições a um carrossel de imagens. Adicione o snippet de código abaixo ao seu arquivo App.svelte
:
{#cada livro como livro, i} {#if activeIndex===i} {/E se} {/cada}
No snippet de código acima, importamos as funções de transição que usaremos. Também importamos a função de atenuação quintOut
. O Svelte oferece várias funções de atenuação prontas para uso.
Para adicionar transições ao Svelte, usamos a diretiva transição
. Passamos a diretiva transição
para o elemento img
.
As funções de transição podem aceitar parâmetros. Definimos o atraso
, duração
e easing
para a transição, passando um objeto de configuração.
Transições de entrada e saída
Ao trabalhar com transições no Svelte, podemos definir funções de transição separadas para as transições in
e out
dos elementos. O gif abaixo é a demonstração das transições in
e out
que faremos:
Vamos implementar as transições in
e out
em outra demonstração. Copie o código abaixo em seu arquivo App.svelte
:
{#if show}Meu nome é Nefe James
{/E se}
Trocamos a diretiva transição
para in
e out
. Como a diretiva transição
, os parâmetros também podem ser passados para in
e out
.
Transições personalizadas
Você pode querer definir transições personalizadas e pode fazer isso no Svelte. Nos bastidores, cada transição é uma função que obtém um nó e um parâmetro.
O gif abaixo mostra a transição personalizada que criaremos:
Vamos ver como criar transições personalizadas no Svelte. Copie o código abaixo em seu arquivo App.svelte
:
(isActive=! isActive)}> {#if isActive} Ocultar caixa {: else} Mostrar caixa {/if} {#if isActive} {/E se}
Definimos uma função chamada customTransition
. Esta função retorna uma propriedade css, easing
e duration
. A propriedade css é uma função com t
como parâmetro.
t
representa os quadros de transição disponíveis de 0 a 1. Usamos o valor de t
para definir a escala do objeto. Em seguida, passamos customTransition
para a caixa.
Animações em Svelte
Svelte fornece uma função de animação flip
que pode ser acessada a partir do módulo svelte/animate
. A diretiva animate
é usada quando você deseja adicionar animações a uma lista de itens que estão sendo reordenados. O gif abaixo mostra como as animações flip funcionam na animação de uma lista de itens:
Vamos ver como fazer animações flip. Copie o código abaixo em seu arquivo App.svelte
para acompanhar:
{#cada números como número (número)}{number}
{/cada}
No snippet acima, estamos embaralhando uma matriz de números de 1 a 9. Para animar o embaralhamento, começamos importando flip
de svelte/animate
.
Passamos flip
para a tag p
por meio da diretiva animate
. Svelte rastreia e anima a mudança na posição dos números sempre que o botão é clicado.
Controlando os movimentos dos elementos no Svelte
O módulo svelte/motion
exporta duas funções, tweened
e spring
, para criar armazenamentos graváveis cujos valores mudam com o tempo após definir
e atualizar
, em vez de imediatamente.
A demonstração abaixo mostra como a animação interpolada
parece em ação:
Vamos fazer uma demonstração para ver como os movimentos funcionam. Para acompanhar, copie o código abaixo em seu arquivo App.svelte
:
Importamos a função de movimento tweened
de svelte/motion
, junto com a função de easing quartInOut
de svelte/easing
.
Tweened
nos permite gerar quadros intermediários em uma sequência animada para dar a aparência de movimento suave. Tweened
aceita um valor inicial como seu primeiro argumento e um objeto de configuração como o segundo. Definimos a duração
e o easing
para o movimento interpolado
.
Definimos a largura
inicial da imagem como 100px. Na função handleClick
, atualizamos a largura
para 150px.
Em seguida, passamos handleClick
para o botão usando a diretiva on
de Svelte.
Agora que sabemos como os movimentos interpolados
funcionam, e os movimentos de primavera
?
A demonstração abaixo mostra como a animação spring
fica quando aplicada a um elemento:
Copie o código abaixo em seu arquivo App.svelte
:
Spring
funciona de maneira semelhante a tweened
, embora seu objeto de configuração aceite as propriedades rigidez
e amortecimento
. Em vez de executar essa animação quando um botão é clicado, usamos a função setInterval
para alterar a largura da imagem em intervalos diferentes. Isso nos dá a aparência de um coração batendo.
Transições e animações no SvelteKit
As transições e animações funcionam da mesma forma no SvelteKit e no Svelte. Vamos configurar uma animação no SvelteKit.
A demonstração abaixo mostra como a transição interpolada
fica no Sveltekit. Observe que não há diferença na implementação ou aparência:
Copie o código abaixo em seu arquivo App.svelte
para acompanhar:
Clique em um botão e veja a mágica de transição do SvelteKit acontecer & # x1f31f;
Como fizemos no Svelte, importamos tweened
de svelte/motion
junto com uma função de atenuação. Definimos uma variável progresso
e definimos o valor da barra de progresso para essa variável.
Sempre que qualquer um dos botões é clicado, o valor da barra de progresso é atualizado e vemos uma bela transição ocorrer de um valor para o outro.
Conclusão
Adicionar animações sutis e efeitos de transição é uma ótima maneira de manter os visitantes envolvidos com seu conteúdo. Quando feitas corretamente, as animações tornam seu site ou aplicativo mais atraente e podem ajudar a aumentar o envolvimento do usuário.
As transições e animações no Svelte são fantásticas. A equipe do Svelte fez um ótimo trabalho ao empacotar animações, transições, movimentos e easings integrados na biblioteca.
A postagem Transições e animações essenciais em Svelte apareceu primeiro no LogRocket Blog .