Transição de preenchimento com CSS
110
2

Transição de preenchimento com CSS

Nesse artigo vamos ver como fazer uma animação de preenchimento em um botão, utilizando transições com CSS3. Bora aprender?

Giovanna Moeller
0 min
110
2
Email image

Oie pessoal, tudo bem com vocês? Nesse artigo vamos ver como fazer uma animação de preenchimento em um botão, utilizando transições com CSS3. Bora aprender?

Eu vou utilizar o CodePen como nosso editor de código, pois ele é online e muito simples de utilizar, inclusive podemos ver as atualizações em tempo real! Você pode acessá-lo aqui.

No nosso HTML, vamos criar a tag body e dentro dela colocaremos o botão (button) com uma classe chamada 'btn'. Só isso!

Email image

Agora vamos partir pra nossa estilização!

Vou adicionar uma cor de fundo no nosso corpo da página! Essa cor é bem similar ao preto (quem não gosta de um Dark Mode né hahahah).

Email image

Vou estilizar o botão para ficar diferente do padrão. Utilizei a classe pois é mais específico do que utilizar apenas o "button" no geral.

Email image

Antes da estilização:

Email image

Depois da estilização:

Email image

Bem melhor, né? Então bora explicar o que aconteceu aqui!

🐻‍❄️ Padding = adicionei um espaçamento interno de 1rem na vertical e 2rem nas laterais. "rem" é uma unidade de medida considerada responsiva.

🦁 Border-radius = bordas arredondadas.

🐶 Background: transparent = adicionei um fundo transparente ao botão.

🐱 Border: adicionei uma borda de 2px com uma cor meio avermelhada.

🐷 Font-size: aumentei o tamanho da fonte para 1.2rem.

🐸 Color: white = troquei a cor do texto para branco.

🐵 Cursor: pointer = deixamos o cursor do mouse com a mãozinha, para aparecer clicável.

🐧 Position: relative = adicionamos essa propriedade pois utilizamos o position: absolute no pseudo-elemento before (que veremos a seguir). E lembrando que todo position absolute precisa ter um pai relativo! 

ps: tenho um vídeo lá no meu canal do YouTube falando sobre position. ❤️


Agora vamos para o pseudo elemento ::before. O before (significa antes) vai adicionar um conteúdo antes do elemento. A ideia aqui é fazer com que o before adicione uma "caixa" da cor avermelhada em cima do nosso botão, para depois conseguirmos animar ela. Olha só:

Email image

🐻‍❄️ Content: '' = é obrigatório ter um content quando se utiliza ::before ou ::after. Como nós vamos manipular o conteúdo, deixamos ele vazio.

🦁 Position: absolute = ele precisa ser posicionado de forma absoluta em relação ao nosso botão (que é relativo).

🐶 background: #F4796B; = é a cor do nosso preenchimento.

🐱 width: 100%; height: 100% = adicionamos 100%  para que tenha a largura e altura total do botão.

Resultado:

Email image

Não ficou muito legal né? Ainda precisamos posicioná-lo de maneira com que encaixe no nosso botão. Para isso, adicionamos o top: 0 (topo) e left: 0 (esquerda), essas são propriedades acompanhadas do position!

Email image

Agora sim posicionamos de maneira correta! Mas para finalizar, vamos adicionar um z-index: -1 (eixo Z) para a caixa não sobrepor o nosso texto! E ah, vamos colocar também uma transição para o preenchimento ser feito de maneira suave:

Email image
Email image

Bom, o nosso objetivo é fazer com que a caixa avermelhada apareça apenas quando colocamos o mouse em cima disso! Por isso, vamos alterar a nossa width, e colocar como 0, para então, no efeito do mouse por cima (hover), ela ser 100%. Deu pra entender a lógica?

Email image

E por fim, no nosso efeito hover:

Email image

E proooonto! Finalizamos a nossa animação. E aí, curtiram? 💜

Email image