Reputation: 2095
I have an object rotating 360 degrees using CSS3's rotate animation. However, the code (linked below) rotates the image 360 degrees then repeats the same animation.
I want to rotate it 360 degrees, pause every 90 degress and have infinite rotating.
Any help would be much appreciated.
Thanks
.image {
position: absolute;
top: 50%;
left: 50%;
width: 120px;
height: 120px;
margin:-60px 0 0 -60px;
-webkit-animation:spin 1s ease-in-out infinite;
-moz-animation:spin 1s linear infinite;
animation:spin 1s linear infinite;
}
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
Here is a JSFiddle for the project
Upvotes: 5
Views: 25092
Reputation: 4350
If you just want it to stop after it rotates just remove the infinite modifier:
.image {
position: absolute;
top: 50%;
left: 50%;
width: 120px;
height: 120px;
margin:-60px 0 0 -60px;
-webkit-animation:spin 4s ease-in-out; // No more infinite
-moz-animation:spin 4s linear;
animation:spin 4s linear;
}
@-moz-keyframes spin {
100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); }
}
@-webkit-keyframes spin {
100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); }
}
@keyframes spin {
100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); }
}
If you want to stop the animation at the increments it is a little harder:
.image {
position: absolute;
top: 50%;
left: 50%;
width: 120px;
height: 120px;
margin:-60px 0 0 -60px;
-webkit-animation:spin 4s ease-in-out infinite;
-moz-animation:spin 4s linear infinite;
animation:spin 4s linear infinite;
}
@-moz-keyframes spin {
0% { -webkit-transform: rotate(0deg); transform:rotate(0deg); }
25% { -webkit-transform: rotate(90deg); transform:rotate(90deg); }
25.5% { -webkit-transform: rotate(90deg); transform:rotate(90deg); }
50% { -webkit-transform: rotate(180deg); transform:rotate(180deg); }
50.5% { -webkit-transform: rotate(180deg); transform:rotate(180deg); }
75% { -webkit-transform: rotate(270deg); transform:rotate(270deg); }
75.5% { -webkit-transform: rotate(270deg); transform:rotate(270deg); }
100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); }
}
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); transform:rotate(0deg); }
25% { -webkit-transform: rotate(90deg); transform:rotate(90deg); }
25.5% { -webkit-transform: rotate(90deg); transform:rotate(90deg); }
50% { -webkit-transform: rotate(180deg); transform:rotate(180deg); }
50.5% { -webkit-transform: rotate(180deg); transform:rotate(180deg); }
75% { -webkit-transform: rotate(270deg); transform:rotate(270deg); }
75.5% { -webkit-transform: rotate(270deg); transform:rotate(270deg); }
100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); }
}
@keyframes spin {
0% { -webkit-transform: rotate(0deg); transform:rotate(0deg); }
25% { -webkit-transform: rotate(90deg); transform:rotate(90deg); }
25.5% { -webkit-transform: rotate(90deg); transform:rotate(90deg); }
50% { -webkit-transform: rotate(180deg); transform:rotate(180deg); }
50.5% { -webkit-transform: rotate(180deg); transform:rotate(180deg); }
75% { -webkit-transform: rotate(270deg); transform:rotate(270deg); }
75.5% { -webkit-transform: rotate(270deg); transform:rotate(270deg); }
100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); }
}
Upvotes: 2
Reputation: 12441
You need to add additional points in your keyframe:
@-webkit-keyframes rotate {
0% { -webkit-transform: rotate(0deg); }
20% { -webkit-transform: rotate(90deg); }
25% { -webkit-transform: rotate(90deg); }
45% { -webkit-transform: rotate(180deg); }
50% { -webkit-transform: rotate(180deg); }
70% { -webkit-transform: rotate(270deg); }
75% { -webkit-transform: rotate(270deg); }
100% { -webkit-transform: rotate(360deg); }
}
.animation-rotate {
-webkit-animation-name: rotate;
-webkit-animation-duration: 4.5s;
-webkit-animation-iteration-count: infinite;
-webkit-transition-timing-function: linear;
}
Upvotes: 12