Questo potrebbe essere solo un bug con trasformazioni di rotazione, che affronterò dopo un po 'di background.
Sfondo
Prima di tutto, il modo in cui le rotazioni sono supposto al lavoro è in relazione a un cerchio. Se si specifica un numero di gradi, questo posizionerà l'elemento nella posizione dettata da una quantità di rotazione specificata dai gradi. Quando non si anima una rotazione, ci sono molti modi per rappresentare la posizione dell'elemento. Codice Univoco è a metà destra nel loro commento in quanto il posizionamento di 357 gradi e -3 gradi è lo stesso, ma quando si anima, sono molto diversi. Passare da 0 gradi a -3 gradi è una piccola rotazione in senso antiorario, mentre passando da 0 gradi a 357 gradi è una grande rotazione in senso orario.
risultati
Cosa hai trovato sembra ignorare questo calcolo (sia in Firefox e Chrome da quello che ho provato fuori). Da quello che vedo, che unisce rotate
trasforma in modo efficace inverte il senso che la rotazione dovrebbe andare in, anche se si sta combinando con una rotazione 0deg
:
transform: rotate(90deg); //rotates clockwise
transform: rotate(0deg) rotate(90deg); //rotates counter-clockwise
Sembra che si può risolvere questo problema "unendo" la rotazione trasforma in entrambe le fasi di animazione:
// this performs a clockwise rotation
@keyframes test3 {
0% {
transform: rotate(0deg) rotate(90deg);
}
100% {
transform: rotate(0deg) rotate(357deg);
}
}
Infine, sembra che il numero di materie "combinazioni". Se si combinano 2 rotazioni in un unico passaggio, ma 3 in un altro, il comportamento imprevisto si verifica:
// rotates counter-clockwise since there are unequal rotation transforms
@keyframes test4 {
0% {
transform: rotate(0deg) rotate(0deg) rotate(90deg);
}
100% {
transform: rotate(0deg) rotate(357deg);
}
}
Conclusione
Questo probabilmente non è la risposta più grande, ma unendo le rotazioni come questo solo doesn' sembra che sia documentato ovunque. Suggerirei di non combinare le stesse trasformazioni rotate
(è comunque possibile combinare rotateX
e rotateY
senza questa stranezza) e rispettare la somma dei valori dei gradi.
Nel caso in cui qualcuno che trova questa spiegazione voglia forse saperne di più su questo comportamento di quello che ho, ecco uno fiddle con gli esempi sopra come punto di partenza.
Credo che ruoti nella direzione che prende l'angolo più piccolo tra i valori iniziale e finale di un cerchio (con 357 ovviamente pari a -3 gradi) –
Non sono sicuro di aver capito il tuo punto. L'angolo più piccolo in entrambi i casi è in senso orario. –
Qual è il browser che stai utilizzando e la sua versione? Sono su Chrome v38 (vecchio ma ancora) ed entrambe le versioni ruotano in senso orario. – Harry