Uruchomiam animację na niektórych elementach ustawionych opacity: 0;
w CSS. Klasa animacji jest stosowana naClick i, używając klatek kluczowych, zmienia krycie z 0
na 1
(między innymi).
Niestety po zakończeniu animacji elementy wracają do opacity: 0
(zarówno w przeglądarce Firefox, jak i Chrome). Moje naturalne myślenie byłoby takie, że animowane elementy utrzymują stan końcowy, zastępując ich oryginalne właściwości. Czy to nie prawda? A jeśli nie, jak mogę zmusić element do zrobienia tego?
Kod (wersje prefiksowe nie są dołączone):
@keyframes bubble {
0% { transform:scale(0.5); opacity:0.0; }
50% { transform:scale(1.2); opacity:0.5; }
100% { transform:scale(1.0); opacity:1.0; }
}
css
css-animations
Dan
źródło
źródło
Odpowiedzi:
Spróbuj dodać
animation-fill-mode: forwards;
. Na przykład tak:źródło
forwards
wartośćanimation-fill-mode
właściwości zapewnia, że element zachowa ostatni stan klatki kluczowej animacji po zakończeniu animacji. na przykład jeśli animacja zmieni sięwidth
z 0 na 100 pikseli, ta właściwość gwarantuje, że element pozostanie szeroki na 100 pikseli po zakończeniu animacji.100% / to
punktu, w@keyframe
przeciwnym razie nie zadziała.Jeśli używasz więcej atrybutów animacji, skrót to:
To daje:
2s
Trwanielinear
funkcja pomiaru czasu0.5s
opóźnienie1
liczba iteracji (może być nieskończona)normal
kierunekforwards
tryb wypełnienia (cofnij, jeśli chcesz mieć zgodność, aby użyć pozycji końcowej jako stanu końcowego)źródło
JEŚLI NIE WYKORZYSTUJESZ KRÓTKIEJ WERSJI RĘCZNEJ: Upewnij się, że
animation-fill-mode: forwards
jest PO deklaracji animacji, inaczej nie będzie działać ...vs
źródło
Użyj trybu wypełnienia animacji: do przodu;
Element zachowa wartości stylu ustawione przez ostatnią klatkę kluczową (zależy od kierunku animacji i liczby iteracji animacji).
Uwaga: Reguła @keyframes nie jest obsługiwana w programie Internet Explorer 9 i wcześniejszych wersjach.
Przykład roboczy
źródło