Może to być po prostu błąd związany z przekształceniami rotacyjnymi, które opiszę po pewnym czasie.
Tło
Po pierwsze, sposób obroty są rzekomą do pracy jest w stosunku do okręgu. Jeśli określisz liczbę stopni, to umieścisz element w pozycji podyktowanej przez stopień obrotu określony przez stopnie. Gdy nie animujesz obrotu, istnieje wiele sposobów na przedstawienie położenia elementu. Kod Wyjątkowo jest w połowie komentarzem w tym, że umieszczenie 357 stopni i -3 stopni jest takie samo, ale podczas animowania są bardzo różne. Przechodzenie od 0 stopni do -3 stopni to mały obrót w lewo, podczas gdy przechodzenie od 0 stopni do 357 stopni jest dużym ruchem wskazówek zegara.
Ustalenia
Co znalazłeś wydaje się ignorować te obliczenia (zarówno w Firefox i Chrome od tego, co mam przetestowane). Z tego co widzę, łącząc rotate
przekształca skutecznie odwraca kierunek że obrót powinny się dzieje w, nawet jeśli połączenie z 0deg
obrotów:
transform: rotate(90deg); //rotates clockwise
transform: rotate(0deg) rotate(90deg); //rotates counter-clockwise
Wydaje się, że problem ten można rozwiązać poprzez "kombinacja" transformacji rotacji w obu etapach animacji:
// this performs a clockwise rotation
@keyframes test3 {
0% {
transform: rotate(0deg) rotate(90deg);
}
100% {
transform: rotate(0deg) rotate(357deg);
}
}
Wreszcie wydaje się, że liczba "kombinacji" ma znaczenie. Jeśli połączyć 2 obroty w jednym etapie, ale 3 w innym, nieoczekiwane zachowanie występuje:
// 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);
}
}
Wnioski
To prawdopodobnie nie jest najlepsza odpowiedź, ale łącząc obroty tak właśnie robi” t wydaje się być udokumentowane w dowolnym miejscu. Sugerowałbym nie łączyć tych samych transformacji rotate
(nadal można łączyć rotateX
i rotateY
bez tej dziwności) i trzymać się sumą wartości stopni.
Jeśli ktoś znajdujący to wyjaśnienie chce być może dowiedzieć się więcej o tym zachowaniu niż ja, oto fiddle z powyższymi przykładami jako punktem wyjścia.
Wierzę, że obraca się w kierunku, który ma najmniejszy kąt między początkową i końcową wartością okręgu (z 357 oczywiście będącymi -3 stopniami) –
Nie jestem pewien, czy rozumiem. Mniejszy kąt w obu przypadkach jest zgodny z ruchem wskazówek zegara. –
Jaka jest używana przeglądarka i jej wersja? Jestem na Chrome v38 (stary, ale nadal) i obie wersje obracają się zgodnie z ruchem wskazówek zegara. – Harry