As animações da web podem ser usadas de várias maneiras para chamar a atenção para certos recursos de um site ou aplicativo de uma forma visualmente estimulante.

Por exemplo, quando você seleciona o botão do balão de fala no canto inferior direito do site da LogRocket, o balão de fala muda para uma seta para baixo com uma animação giratória que adiciona um floreio extra à interação do usuário.

As animações também podem ser usadas puramente decorativamente para tornar o uso do site mais divertido e esteticamente atraente para o usuário, como na página de destino de um site que, de outra forma, usaria uma imagem estática ou teria um espaço em branco.

Não importa para que você esteja usando animação, existem diferentes maneiras de implementar animações da web.

Pré-requisitos

  • Editor de código, por exemplo Codepen
  • HTML básico
  • Conhecimento básico de CSS, em particular a propriedade animation e consultas @media
  • Software de edição de imagens, por exemplo, Figma ou Adobe Photoshop

Criação de uma folha de sprite e animações usando CSS

Neste post, vou cobrir como criar sua própria folha de sprite e animá-la usando CSS. É um método legal de aprender e, de fato, muitos sites e aplicativos populares usam folhas de sprite para animar as funções do usuário.

Na verdade, o Twitter usa uma folha de sprite para animar seu botão de coração, que se enche e explode com confetes quando você gosta de um tweet. Neste tutorial, criaremos um gráfico simplificado de uma janela do Terminal com o texto “hello” digitado.

É assim que vai ficar:

Ortografia de demonstração de animação

Criando a folha de sprite na Figma

Para começar, abra o editor de imagens de sua escolha. Gosto de usar o Figma porque é gratuito e você também pode usá-lo no navegador como Adobe Photoshop, Illustrator ou qualquer ressurreição do MS Paint!

Eu escolhi projetar o gráfico em sua maior escala para uma tela de desktop para que possa torná-lo menor em telas de tablets e celulares em vez de projetá-lo para a tela menor e estendê-lo para uma tela maior.

Vamos criar um espaço de trabalho do tamanho de um desktop (1440px x 1024px). Observe que cada quadro da animação será uma imagem deste tamanho.

A seguir, crie o gráfico desenhando um grande retângulo cinza escuro para a janela do Terminal. Em seguida, adicione um retângulo cinza claro na parte superior da barra de ferramentas e adicione três círculos cinza na barra de ferramentas para os botões. Seu gráfico básico do Terminal deve ser parecido com este até agora:

Terminal

A próxima etapa é mapear o quadro final, que conterá o texto completo que você deseja e onde no gráfico você deseja que ele vá. Escolhi usar a fonte monoespaçada Roboto Mono para que as letras fiquem com o mesmo tamanho e espaçamento. Digitei a palavra “olá” e criei um retângulo para o cursor de texto. Era assim:

A palavra

Agora você precisará criar cada quadro da animação e salvar cada um como uma imagem separada. Começarei com um quadro que mostra apenas o cursor de texto no Terminal e, em seguida, moverei-o para a direita conforme digito cada letra de cada quadro. Isso criará seis quadros no total.

Depois de ter cada quadro, você pode adicioná-los todos em um arquivo de imagem de folha de sprite. Usei uma ferramenta CSS Sprites Generator , selecionando preenchimento de 0px entre os elementos e alinhando esquerda-direita.

Meu arquivo sprites baixado era assim:

CSS Sprites

Animando a folha de sprite

Agora é hora de adicionar a animação da folha de sprite à sua página da web. Comece adicionando um

vazio ao seu arquivo HTML e dê a ele o nome de classe “terminal”.

Este elemento

atuará como uma “janela de visualização” onde cada quadro da folha do sprite será exibido na animação:

 

A seguir, adicione um pouco de estilo CSS ao

. A altura do div deve ser a altura do arquivo de imagem da folha de sprite (no caso deste tutorial, 1024px), e a largura deve ser a largura de cada imagem quadro (1440px).

O URL de fundo deve ser definido para o arquivo de imagem da folha de sprite. Você deve ver o primeiro quadro de sua animação cobrir o fundo de

.

.terminal { altura: 1024px; largura: 1440px; plano de fundo: url ("https://i.imgur.com/zLh2Pgs.png");
}

Agora é hora de adicionar a animação CSS. Nesse caso, queremos puxar a imagem de fundo para a “janela de visualização” da direita para a esquerda, conforme demonstrado no diagrama abaixo.

CSS Sprites Viewport

Primeiro, defina o código de animação com o nome sprite em um bloco @keyframes que especifica quais estilos aplicar na animação.

Queremos fazer a transição da posição de fundo inicial de 0px para mudar a posição à esquerda por toda a largura do arquivo de imagem da folha de sprite ( 8640px , que é cada imagem de largura de 1440 px multiplicada por seis porque há seis frames). Este é o código:

 @keyframes sprite { de {posição de fundo: 0px; } para {posição de fundo:-8640px; }
}

A próxima etapa é adicionar esta animação sprite ao elemento

que está sendo estilizado com a classe .terminal .

Aplique o nome da animação de sprite e defina a duração da animação para o tempo que você deseja que a animação leve para ser concluída um ciclo (escolhi uma velocidade de 1,5 segundos). Em seguida, defina a animation-timing-function para definir como a animação progride.

Aqui, queremos usar o valor steps () , que divide a transição em segmentos iguais. Este é exatamente o efeito que queremos-precisamos que cada quadro seja reproduzido em uma sequência-então defina o número de etapas para 6 , pois há seis quadros na animação.

Finalmente, defina o animation-iteration-count , que define o número de vezes que uma animação deve ser executada antes de parar. Se você deseja que ele seja executado continuamente, o valor deve ser infinito . Aqui está o código:

.terminal { ... nome-da-animação: sprite; duração da animação: 1,5s; função de tempo de animação: etapas (6); animação-iteração-contagem: infinito;
}

Agora que entendemos e detalhamos como o código funciona, podemos refatorá-lo um pouco. Não precisamos especificar o from na regra @keyframes , pois a posição do plano de fundo é 0px por padrão.

Além disso, o bloco de estilos de animação pode ser elegantemente combinado em uma linha usando a animação CSS propriedade abreviada . Aqui está o código refatorado:

 @keyframes sprite { para {posição de fundo:-8640px; }
} .terminal { altura: 1024px; largura: 1440px; plano de fundo: url ("https://i.imgur.com/zLh2Pgs.png"); animação: sprite 1.5s etapas (6) infinito;
}

Tornando a janela de visualização de sua animação responsiva

No momento, a janela de visualização de animação

tem a altura e largura fixas de uma tela de desktop. Isso significa que o

ocupa a tela inteira em uma área de trabalho e irá transbordar em telas menores.

Uma boa maneira de tornar o

responsivo em diferentes tamanhos de tela é usar transform: scale (0.5) para redimensionar o elemento pela metade e, em seguida, definir a escala deve ser 1 para todas as telas maiores que 1024px usando uma consulta @media .

A função CSS scale () redimensiona o elemento do centro, então translate () é necessário para manter o elemento na mesma posição no canto superior esquerdo. O código é parecido com este:

.terminal { ... transformar: traduzir (-25%,-25%) escala (0,5);
} @media only screen e (min-width: 1024px) { .terminal { transformar: escala (1); }
}

É isso! Estas são as etapas para implementar sua própria animação CSS usando uma folha de sprite que você fez. A animação final e o código podem ser visualizados no CodePen:

Veja a Caneta
Fazendo uma animação CSS usando uma folha de sprite
de Hannah Gooding ( @hannahgooding )
em CodePen .

Conclusão

Para o propósito deste tutorial, mantive o gráfico simples com um número mínimo de quadros.

Em vez de usar uma folha de sprite, você pode obter o mesmo efeito posicionando o texto sobre uma imagem estática de um Terminal e usando um efeito de digitação para animar o texto com CSS ou JavaScript.

Mas o método de folha de sprite CSS se presta melhor para criar gráficos mais complicados do que o deste tutorial. Boa programação!

A postagem Fazendo animações CSS usando uma folha de sprite apareceu primeiro no LogRocket Blog .

Source link