Files
freeCodeCamp/curriculum/challenges/portuguese/01-responsive-web-design/applied-visual-design/learn-how-the-css-keyframes-and-animation-properties-work.md

4.3 KiB

id, title, challengeType, videoUrl, forumTopicId, dashedName
id title challengeType videoUrl forumTopicId dashedName
587d78a7367417b2b2512adf Aprender como funcionam as propriedades de animação e @keyframes do CSS 0 https://scrimba.com/c/cakprhv 301059 learn-how-the-css-keyframes-and-animation-properties-work

--description--

Para animar um elemento, você precisa aprender as propriedades de animação e a regra @keyframes. As propriedades de animação controlam como a animação deve se comportar e a regra @keyframes controla o que acontece durante essa animação. Existem oito propriedades de animação no total. Este desafio será simples e vai abranger os dois mais importantes:

animation-name define o nome da animação, que mais tarde será usado por @keyframes para dizer ao CSS quais regras combinam com quais animações.

animation-duration define a duração da animação.

@keyframes é como especificar exatamente o que acontece na animação ao longo de sua duração. Isso é feito fornecendo propriedades CSS para "tempos" específicos durante a animação, com porcentagens que variam de 0% a 100%. Se você comparar isso a um filme, as propriedades CSS em 0% representariam como o elemento seria exibido na cena de abertura. As propriedades do CSS em 100% representariam como o elemento aparecia no final, antes do rolamento dos créditos. Por fim, o CSS faz a parte mágica de criar a transição do elemento ao longo da duração da animação. Aqui está um exemplo para ilustrar o uso de @keyframes e as propriedades de animação:

#anim {
  animation-name: colorful;
  animation-duration: 3s;
}

@keyframes colorful {
  0% {
    background-color: blue;
  }
  100% {
    background-color: yellow;
  }
}

Para o elemento com o id anim, o trecho de código acima define o valor da propriedade animation-name como colorful e define o valor da propriedade animation-duration como 3 segundos. Em seguida, a regra @keyframes é vinculada às propriedades da animação com o nome colorful. Ela define a cor como azul no início da animação (0%), que mudará para amarelo no final da animação (100%). Você não está limitado apenas a transições de início e fim, você pode definir propriedades para qualquer valor entre 0% e 100%.

--instructions--

Crie uma animação para o elemento com o id rect, definindo o valor da propriedade animation-name como rainbow e o valor da propriedade animation-duration como 4 segundos. Em seguida, declare uma regra @keyframes e defina a propriedade background-color no início da animação (0%) para azul, o meio da animação (50%) para verde e o final da animação (100%) para amarelo.

--hints--

O elemento com id rect deve ter a propriedade animation-name com o valor de rainbow.

assert($('#rect').css('animation-name') == 'rainbow');

O elemento com o id rect deve ter a propriedade animation-duration com o valor de 4s.

assert($('#rect').css('animation-duration') == '4s');

O nome da regra @keyframes deve ser o mesmo da propriedade animation-name, rainbow.

assert(code.match(/@keyframes\s+?rainbow\s*?{/g));

A regra @keyframes para rainbow deve usar a propriedade background-color com o valor blue em 0%.

assert(code.match(/0%\s*?{\s*?background-color:\s*?blue;\s*?}/gi));

A regra @keyframes para rainbow deve usar a propriedade background-color com o valor green em 50%.

assert(code.match(/50%\s*?{\s*?background-color:\s*?green;\s*?}/gi));

A regra @keyframes para rainbow deve usar a propriedade background-color com o valor yellow em 100%.

assert(code.match(/100%\s*?{\s*?background-color:\s*?yellow;\s*?}/gi));

--seed--

--seed-contents--

<style>
  div {
    height: 40px;
    width: 70%;
    background: black;
    margin: 50px auto;
    border-radius: 5px;
  }

  #rect {


  }




</style>
<div id="rect"></div>

--solutions--

<style>
  div {
    height: 40px;
    width: 70%;
    background: black;
    margin: 50px auto;
    border-radius: 5px;
  }

  #rect {
    animation-name: rainbow;
    animation-duration: 4s;
  }

  @keyframes rainbow {
    0% {
      background-color: blue;
    }
    50% {
      background-color: green;
    }
    100% {
      background-color: yellow;
    }
  }
</style>
<div id="rect"></div>