Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Interação com um clique

Fiz o projeto (aqui) da aula do Alura+: “Animação de coração: um projeto em HTML/CSS”

Queria que o coração balançasse, além de ser preenchido. Descobri que dá para incluir várias animações simultaneamente. Separei as em keyframes diferentes porque percebi que se incluísse apenas em uma, ela herdaria o tempo da primeira. Inclusive, para que o código fique menor, caso seja possível, incluímos animações diferentes na mesma keyframe ou o ideal é sempre dividir as animações em keyframes diferentes?

Outra dúvida que tenho é como incluir uma animação quando o elemento deixa de ser checado. Por exemplo, no meu coração, quando clicasse nele de novo e o checkbox fosse desmarcado, fazer ele balançar novamente.

3 respostas

Alguém?

solução!

Olá Breno, tudo bem?

Gostaria de parabenizar por se desafiar, a busca formas diferentes de praticar os exercícios

Quanto a primeira pergunta, você pode incluir diferentes animações na mesma keyframe usando a regra com parênteses @keyframes, como já feita por ti, no entanto, se você deseja criar animações mais complexas com diferentes valores a serem animados e lógica de interpolação diferente, é melhor usar várias keyframes separados, para evitar maiores complicações ou desorganização.

Quanto à segunda questão podemos utilizar seguinte tag:

input[type="checkbox"]:not(:checked) + label > svg{
   animation: shake 2s linear, fill2 1s;
  animation-fill-mode: forwards;
}

Observe que acessei o input e o valor desabilitado que é utilizando o :not que é um pseudo classe, que significa contrario, ou seja, o contrario chacked(checado) é o não checado(not(:checked))

Depois vamos criar as animações que no caso é a shake que eu repeti do Wiggle já criado por ti, e o fill2 que vai apenas deixar transparente mas é claro fique a vontade para alterar esses valores:

@keyframes shake {
  0%, 7% {
    transform: rotateZ(0);
  }
  15% {
    transform: rotateZ(-15deg);
  }
  20% {
    transform: rotateZ(10deg);
  }
  25% {
    transform: rotateZ(-10deg);
  }
  30% {
    transform: rotateZ(6deg);
  }
  35% {
    transform: rotateZ(-4deg);
  }
  40%, 100% {
    transform: rotateZ(0);
  }  
}
@keyframes fill2 {
   0% {
    fill: transparent;
  }

} 

fazendo essas alterações temos o seguinte resultado:

Gif de um coração sendo ativado e desabilitado, no CSS e HTML

Espero ter ajudado! Qualquer dúvida que tiver, estou à disposição para ajudá-lo.

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Sensacional, Victor! Muito obrigado pelas dicas. Agora as coisas fazem mais sentido hahaha