Tworzymy animację przesuwania się, która wykona się jeden raz i „zostanie”, nie wróci do pozycji początkowej, tylko zostanie tam, gdzie się skończyła. Poznajemy właściwość animation-fill-mode ustawioną na forwards.
W HTMLu mamy tylko koło, które będziemy chcieli przesunąć na przykład w prawo. Za koło robi div, którego niebawem ostylujemy:
<div class="circle"></div>
Teraz tradycyjnie reset stylów, flexbox dla wycentrowania, ostylowanie diva na koło:
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
height: 100vh;
background-color: aliceblue;
display: flex;
justify-content: center;
align-items: center;
}
.circle {
width: 200px;
height: 200px;
border-radius: 50%;
background-color: tomato;
}
Okej, tworzymy animację przesuwania się w prawo. Ma się wykonać 1 raz.
.circle {
(...)
animation: moveright 1s ease-in 1;
}
@keyframes moveright {
from {transform: translateX(0);}
to {transform: translateX(100px);}
}
Zaczynamy z zerowym przesunięciem na osi X, kończymy z przesunięciem o 100px. Liczba dodatnia – przesuwamy w prawo, zgodnie z rosnącą strzałką (na pewno choć 1 raz widzieliśmy osie X i Y na matematyce).
Dobra, teraz mamy takie coś – animacja moveright trwa 1 sekundę, ease-in, wykonana 1 raz. Po czym następuje gwałtowny przeskok do pozycji początkowej.
Jeżeli chcemy, aby nasz element „został” tam, gdzie został przesunięty (albo utrzymał wielkość, do jakiej go zwiększono, albo kolor, do którego go przemieniono i tak dalej) to musimy wypełnić właściwość animation-fill-mode na 'forwards’:
.circle {
(...)
animation: moveright 1s ease-in 1;
animation-fill-mode: forwards;
}
Tyle wystarczy, aby element został takim, jakim był podczas kończenia animacji.