AMP

Elementi animati

Per migliorare ulteriormente una storia web, è possibile applicare elementi animati all'interno di una pagina. Ad esempio, puoi far entrare il titolo in una pagina da sinistra, spostarlo nella pagina, farlo dissolvere ecc. Il framework delle storie AMP fornisce le seguenti animazioni preimpostate da utilizzare nelle storie web:

Animazioni preimpostate Durata predefinita (ms) Ritardo predefinito (ms)
drop 1600 0
fade-in 500 0
fly-in-bottom 500 0
fly-in-left 500 0
fly-in-right 500 0
fly-in-top 500 0
pulse 500 0
rotate-in-left 700 0
rotate-in-right 700 0
twirl-in 1000 0
whoosh-in-left 500 0
whoosh-in-right 500 0
pan-left 1000 0
pan-right 1000 0
pan-down 1000 0
pan-up 1000 0
zoom-in 1000 0
zoom-out 1000 0

Per applicare un ingresso animato a un elemento occorre indicare l'attributo animate-in="<animation preset>" con uno dei valori delle animazioni preimpostate. Ad esempio per far scendere del testo in una pagina, aggiungere l'attributo animate-in="drop" all'elemento di testo:

<amp-story-page id="page3">
  ...
  <amp-story-grid-layer template="vertical">
    <p animate-in="drop">Drop this text into the page</p>
</amp-story-page>

Prova i diversi effetti di animazione, aggiungendo l'attributo animate-in="<animation preset>" agli elementi nelle pagine di una storia.

Temporizzazione delle animazioni

Ogni animazione preimpostata ha integrato un valore di tempo predefinito per i seguenti attributi:

  • ritardo: questo è il tempo necessario per ritardare l'avvio dell'animazione. Ad esempio, un ritardo di 0,3 secondi significa che l'animazione entra nella pagina dopo 0,3 secondi. Un ritardo di 0 secondi avvia immediatamente l'animazione.
  • durata: indica la quantità di tempo per cui l'animazione ha luogo. Ad esempio, l'animazione in dissolvenza dall'inizio alla fine richiede 500 ms.

È possibile personalizzare i tempi di un'animazione cambiando il ritardo o la durata tramite gli attributi animate-in-delay e animate-in-duration. Nell'esempio seguente, l'elemento my-element entra da sinistra nella pagina dopo 0,3 secondi e completa l'entrata in 0,5 secondi:

<amp-story-page id="my-page">
  ...
  <p
    class="my-element"
    animate-in="fly-in-left"
    animate-in-delay="0.3s"
    animate-in-duration="0.5s"
  >
    I'm going to fly into the page from the left!
  </p>
</amp-story-page>

Animazione dell'ultima pagina

L'ultima pagina della nostra storia web è composta da due livelli: il primo livello è una raccolta di immagini di animali e il secondo livello mostra un banner di testo. Per creare questa pagina, aggiungere il codice seguente subito dopo la pagina precedente della storia:

<amp-story-page id="page5">
  <amp-story-grid-layer template="vertical" class="noedge">
    <div class="wrapper">
      <amp-img
        src="assets/cat.jpg"
        width="720"
        height="1280"
        layout="responsive"
      >
      </amp-img>
      <amp-img
        src="assets/dog.jpg"
        width="720"
        height="1280"
        layout="responsive"
      >
      </amp-img>
      <amp-img
        src="assets/bird.jpg"
        width="720"
        height="1280"
        layout="responsive"
      >
      </amp-img>
      <amp-img
        src="assets/rabbit.jpg"
        width="720"
        height="1280"
        layout="responsive"
      >
      </amp-img>
    </div>
  </amp-story-grid-layer>
  <amp-story-grid-layer template="vertical" class="center-text">
    <p class="banner-text">Pets can lower your stress levels!</p>
  </amp-story-grid-layer>
</amp-story-page>

Ricaricare la storia AMP nel browser e verificare che la pagina venga visualizzata correttamente e abbia questo aspetto:

Ha un bell'aspetto, ma è tutto troppo statico! Aggiungiamo qualche animazione!

Inizieremo animando l'entrata del banner di testo e lo faremo sfrecciare dalla parte destra della pagina. Aggiungere l'attributo animate-in="whoosh-in-right" all'elemento <p> in questo modo:

<p class="banner-text" animate-in="whoosh-in-right">
  Pets can lower your stress levels!
</p>

Ricaricare la pagina della storia nel browser e verificare che il banner sia visualizzato.

Poi, facciamo in modo che tutte le immagini abbiano una dissolvenza. Aggiungere l'attributo animate-in="fade-in" a ciascuno degli elementi amp-img come nel seguente codice:

<amp-img
  src="assets/cat.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
>
</amp-img>
<amp-img
  src="assets/dog.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
>
</amp-img>
<amp-img
  src="assets/bird.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
>
</amp-img>
<amp-img
  src="assets/rabbit.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
>
</amp-img>

Aggiornando e ricaricando la pagina, ciascuna immagine avrà una dissolvenza. È un effetto fantastico, ma è appena visibile perché tutte le immagini si dissolvono allo stesso tempo! Possiamo migliorare l'effetto visivo cambiando la tempistica di queste animazioni.

Ritardiamo l'entrata della prima immagine in modo che sia vicina al banner di testo quando questo finisce di entrare, diciamo con un ritardo di 0.4 s. Le restanti tre immagini possono arrivare 0,2 s dopo l'ingresso dell'immagine precedente. Per ciascuno degli elementi amp-img, aggiungiamo l'attributo animate-in-delay="" con un valore di ritardo opportuno. Il codice risultante dovrebbe essere simile al seguente:

<amp-img
  src="assets/cat.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
  animate-in-delay="0.4s"
>
</amp-img>
<amp-img
  src="assets/dog.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
  animate-in-delay="0.6s"
>
</amp-img>
<amp-img
  src="assets/bird.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
  animate-in-delay=".8s"
>
</amp-img>
<amp-img
  src="assets/rabbit.jpg"
  width="720"
  height="1280"
  layout="responsive"
  animate-in="fade-in"
  animate-in-delay="1s"
>
</amp-img>

Aggiornare e ricaricare la storia. L'ultima pagina dovrebbe avere un aspetto simile al seguente:

Ci sono molte possibilità di animazione per le storie web (ad esempio, combinazione e concatenazione di animazioni). In questa esercitazione abbiamo solo sfiorato l'argomento. Per ulteriori informazioni sulle animazioni, consultare la documentazione di riferimento di amp-story.