Witam,
Zainspirowany przykładem chciałem zrobić animacje w CSS, gdzie kwadrat obraca się po kole w specyficzny sposób.
- Założenia:
Używam transform-origin: 50% 0%; aby kwadrat obracał się tylko według punktu 'po środku górnej krawędzi kwadratu'.
Do wyznaczania ruchu i obrotu używam: transform: translate(100px, -100px) rotate(-90deg);
Keyframes podzieliłem na 5 kroków: 0% , 25% , 50% , 75% , 100% . 5 punktów, gdzie ma się znaleźć kwadrat w trackie ruchu.
- Problem:
Kod działa, ale: ruch kwardatu nie jest płynny. Widać jak po dojściu do , np. 25% kwadrat przez chwile się zatrzymuje, potem wznawia ruch. Czy istnieje sposób by uzyskać płynność ruchu, tak by w 1 tempie poruszał się kwadrat w animacji? Nie przychodzi mi żaden pomysł do głowy.
Tutaj daje cały kod codepen-animacja-css
Dodatkowo kod html
<div class="wrapper">
<div class="a"></div>
<!-- g1 wyznacza odleglosc -->
<div class="g1"></div>
</div>
Kod CSS
* {
box-sizing: content-box;
margin: 0px;
padding: 0px;
}
.wrapper {
position: relative;
height: 100vh;
width: 100%;
}
.a {
position: absolute;
top: 43%;
left: 47%;
height: 110px;
width: 110px;
background: lightblue;
animation: spin 8s linear infinite;
/* animation: spin 8s linear both; */
transform-origin: 50% 0%;
}
@keyframes spin {
0% {
transform: translate(0px, 0px) rotate(0deg);
}
25% {
transform: translate(100px, -100px) rotate(-90deg);
}
50% {
transform: translate(0px, -200px) rotate(-180deg);
}
75% {
transform: translate(-100px, -100px) rotate(-270deg);
}
100% {
transform: translate(0px, 0px) rotate(-360deg);
}
}
.g1 {
position: absolute;
top: 236px;
left: 762px;
transform: translate(-50%, -50%);
border-radius: 50%;
height: 115px;
width: 115px;
background: red;
}
Z góry dziękuję za sugestie.