Como posso fazer com que duas animações CSS sejam reproduzidas em velocidades diferentes ?
- A imagem deve girar e crescer ao mesmo tempo.
- A rotação será alternada a cada 2 segundos.
- O crescimento terá um ciclo a cada 4 segundos.
Código de exemplo:
.image {
position: absolute;
top: 50%;
left: 50%;
width: 120px;
height: 120px;
margin:-60px 0 0 -60px;
-webkit-animation:spin 2s linear infinite;
-webkit-animation:scale 4s linear infinite;
}
@-webkit-keyframes spin {
100% {
transform: rotate(180deg);
}
}
@-webkit-keyframes scale {
100% {
transform: scaleX(2) scaleY(2);
}
}
http://jsfiddle.net/Ugc5g/3388/ - apenas uma animação (a última declarada) é reproduzida.
css
css-animations
Don P
fonte
fonte
Respostas:
TL; DR
Com uma vírgula, você pode especificar várias animações, cada uma com suas próprias propriedades, conforme indicado na resposta CriticalError abaixo.
Exemplo:
Resposta original
Há duas questões aqui:
# 1
A segunda linha substitui a primeira. Então, não tem efeito.
# 2
Ambos os quadros-chave se aplicam à mesma propriedade
transform
Como alternativa, você poderia envolver a imagem em um
<div>
e animar cada um separadamente e em velocidades diferentes.http://jsfiddle.net/rnrlabs/x9cu53hp/
fonte
Caso alguém novo esteja chegando e pegando esse tópico, você pode especificar várias animações - cada uma com suas próprias propriedades - com uma vírgula.
Exemplo:
fonte
Você realmente pode executar várias animações simultaneamente, mas seu exemplo tem dois problemas. Primeiro, a sintaxe que você usa especifica apenas uma animação. A segunda regra de estilo oculta a primeira. Você pode especificar duas animações usando uma sintaxe como esta:
como neste violino (onde substituí "escala" por "desvanecimento" devido ao outro problema explicado abaixo ... Fique comigo.): http://jsfiddle.net/rwaldin/fwk5bqt6/
Em segundo lugar, ambas as animações alteram a mesma propriedade CSS (transformação) do mesmo elemento DOM. Eu não acredito que você possa fazer isso. Você pode especificar duas animações em elementos diferentes, a imagem e um elemento de contêiner, talvez. Basta aplicar uma das animações ao contêiner, como neste violino: http://jsfiddle.net/rwaldin/fwk5bqt6/2/
fonte
Você não pode reproduzir duas animações, pois o atributo pode ser definido apenas uma vez. Em vez disso, por que você não inclui a segunda animação na primeira e ajusta os quadros-chave para obter o tempo certo?
fonte
você pode tentar algo assim
defina o pai como
rotate
e a imagem comoscale
para que o temporotate
escale
possa ser diferenteExibir trecho de código
fonte