Estou executando uma animação em alguns elementos definidos opacity: 0;
no CSS. A classe de animação é aplicada no Click e, usando quadros-chave, altera a opacidade de 0
para 1
(entre outras coisas).
Infelizmente, quando a animação termina, os elementos retornam para opacity: 0
(no Firefox e no Chrome). Meu pensamento natural seria que os elementos animados mantêm o estado final, substituindo suas propriedades originais. Isso não é verdade? E se não, como posso obter o elemento para fazer isso?
O código (versões prefixadas não incluídas):
@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
fonte
fonte
Respostas:
Tente adicionar
animation-fill-mode: forwards;
. Por exemplo, assim:fonte
forwards
valor daanimation-fill-mode
propriedade garante que o elemento mantenha o último estado da animação do quadro-chave após o término da animação. por exemplo, se sua animação mudarwidth
de 0 para 100 px, essa propriedade garante que o elemento permaneça com 100 px de largura após o término da animação.100% / to
point in,@keyframe
caso contrário não funcionará.Se você estiver usando mais atributos de animação, a abreviação é:
Isto dá:
2s
duraçãolinear
função de temporização0.5s
demora1
iteração-contagem (pode ser infinito)normal
direçãoforwards
modo de preenchimento (definido para trás, se você deseja ter compatibilidade para usar a posição final como o estado final)fonte
Se não estiver usando THE SHORT Versão mão: certifique-se o
animation-fill-mode: forwards
é APÓS a declaração animação ou não vai funcionar ...vs
fonte
Use o modo de preenchimento de animação: para frente;
O elemento reterá os valores de estilo definidos pelo último quadro-chave (depende da direção da animação e da contagem da iteração da animação).
Nota: A regra @keyframes não é suportada no Internet Explorer 9 e versões anteriores.
Exemplo de trabalho
fonte