Wie pro Ihre Anforderung aktualisiert (dass das Objekt selbst sollte immer senkrecht stehen während der Rotation), habe ich meinen vorherigen Code geändert.
Es mag einen anderen Ansatz geben, aber ich denke nur im Moment daran. Hier habe ich unser ursprüngliches "Ball" -Element in ein anderes Div eingepackt. Jetzt macht das äußere Div die normale Pendelanimation. Zusätzlich dazu führt das innere Objekt auch eine gegenläufige Animation durch, die es während der Animation an allen Punkten vertikal gerade hält.
Bitte beachten Sie, dass das innere Objekt seinen Transformationsursprung hat, der center center
ist, da er nur um seine eigene Achse rotieren muss.
#container
{
background-color: #777;
border-radius: 50%;
height: 20px;
margin: 0 auto;
margin-top: 150px;
position: relative;
width: 20px;
}
#ball
{
animation: swing 1s ease 0s infinite;
background-color: green;
height: 50px;
left: -15px;
position: absolute;
top: -150px;
transform-origin: center 150px;
width: 50px;
}
@keyframes swing{
0%{transform: rotate(-22.5deg);}
50%{transform: rotate(22.5deg);}
100%{transform: rotate(-22.5deg);}
}
#main-content
{
animation: innerswing 1s ease 0s infinite;
background-color: red;
display: block;
height: 100%;
width: 100%;
}
@keyframes innerswing{
0%{transform: rotate(22.5deg);}
50%{transform: rotate(-22.5deg);}
100%{transform: rotate(22.5deg);}
}
<div id="container">
<div id="ball">
<div id="main-content"></div>
</div>
</div>
Geben Sie bitte, was Sie bisher –
Absolute Positionierung und einige einfache trigonometrische versucht haben. Sehr gut möglich. –