CodeGym /Corso Java /Frontend SELF IT /Basi delle animazioni

Basi delle animazioni

Frontend SELF IT
Livello 24 , Lezione 0
Disponibile

6.1 Regola @keyframes

Le animazioni CSS permettono di creare effetti visivi complessi e fluidi con il minimo sforzo. Lo strumento principale per creare animazioni in CSS è la regola @keyframes, che definisce i fotogrammi chiave dell'animazione e i cambiamenti degli stili che devono avvenire in ciascun fotogramma.

La regola @keyframes viene utilizzata per creare animazioni definendo le modifiche delle proprietà CSS nelle varie fasi dell'animazione. I fotogrammi chiave determinano gli stili che verranno applicati in momenti specifici durante il processo di animazione.

Sintassi 1:

    
      @keyframes animation-name {
        from {
          /* stili iniziali */
        }

        to {
           /* stili finali */
        }
      }
    
  

Sintassi 2:

    
      @keyframes animation-name {
        0% {
          /* stili iniziali */
        }

        100% {
           /* stili finali */
        }
      }
    
  

Dove:

  • from corrisponde al 0% del tempo dell'animazione
  • to corrisponde al 100% del tempo dell'animazione

Esempio: Cambiamento graduale del colore di sfondo

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Simple Animation Example</title>
          <style>
            @keyframes changeColor {
              from {
                background-color: lightblue;
              }

              to {
                background-color: lightcoral;
              }
            }

            .animated-box {
              width: 200px;
              height: 200px;
              background-color: lightblue;
              animation: changeColor 3s infinite;
            }
          </style>
        </head>
        <body>
          <div class="animated-box">Hover over me!</div>
        </body>
      </html>
    
  

Spiegazione:

  • la regola @keyframes changeColor definisce un'animazione che cambia il colore di sfondo dell'elemento da lightblue a lightcoral
  • la proprietà animation sull'elemento .animated-box specifica che l'animazione changeColor dovrebbe durare 3 secondi e ripetersi all'infinito

6.2 Più fotogrammi chiave

Puoi utilizzare più di due fotogrammi chiave per creare animazioni più complesse, definendo stili per stati intermedi.

Esempio: Movimento diagonale con cambiamento di colore

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Multiple Keyframes Example</title>
          <style>
            @keyframes moveAndChangeColor {
              0% {
                background-color: lightblue;
                transform: translate(0, 0);
              }

              50% {
                background-color: lightgreen;
                transform: translate(100px, 100px);
              }

              100% {
                background-color: lightcoral;
                transform: translate(200px, 0);
              }
            }

            .animated-box {
              width: 200px;
              height: 200px;
              background-color: lightblue;
              animation: moveAndChangeColor 5s infinite;
            }
          </style>
        </head>
        <body>
          <div class="animated-box">Watch me move!</div>
        </body>
      </html>
    
  

Spiegazione:

La regola @keyframes moveAndChangeColor definisce un'animazione che cambia il colore di sfondo e la posizione dell'elemento in tre fasi.

  • Al 0% del tempo dell'animazione, l'elemento ha un colore azzurro chiaro ed è nella posizione iniziale
  • Al 50% del tempo dell'animazione, l'elemento ha un colore verde chiaro e si sposta di 100 pixel a destra e in basso
  • Al 100% del tempo dell'animazione, l'elemento ha un colore corallo chiaro e si sposta di 200 pixel a destra

6.3 Esempi di semplici animazioni

Esempio 1: Pulsazione

Creare un effetto di pulsazione, in cui l'elemento aumenta e diminuisce dolcemente.

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Pulsing Effect</title>
          <style>
            @keyframes pulse {
              0% {
                transform: scale(1);
              }

              50% {
                transform: scale(1.2);
              }

              100% {
                transform: scale(1);
              }
            }

            .pulse-box {
              width: 150px;
              height: 150px;
              background-color: lightpink;
              animation: pulse 2s infinite;
            }
          </style>
        </head>
        <body>
          <div class="pulse-box">Pulsing</div>
        </body>
      </html>
    
  

Spiegazione:

  • la regola @keyframes pulse definisce un'animazione che aumenta l'elemento fino al 120% e lo riporta alla dimensione originale
  • la proprietà animation sull'elemento .pulse-box specifica che l'animazione pulse dovrebbe durare 2 secondi e ripetersi all'infinito

Esempio 2: Rotazione

Creare un effetto di rotazione continua dell'elemento:

HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Rotating Effect</title>
          <style>
            @keyframes rotate {
              from {
                transform: rotate(0deg);
              }

              to {
                transform: rotate(360deg);
              }
            }

            .rotate-box {
              width: 100px;
              height: 100px;
              background-color: lightseagreen;
              animation: rotate 3s infinite linear;
            }
          </style>
        </head>
        <body>
          <div class="rotate-box">Rotating</div>
        </body>
      </html>
    
  

Spiegazione:

  • la regola @keyframes rotate definisce un'animazione che ruota l'elemento da 0 a 360 gradi
  • la proprietà animation sull'elemento .rotate-box specifica che l'animazione rotate dovrebbe durare 3 secondi, ripetersi all'infinito e avvenire con una velocità costante (linear)
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION