See the Pen Create Element Timer, Loop, Second Class by Brandon Brule (@brandonbrule) on CodePen
It started with three classes on 100+ elements
.box for spacing, width and height - and two alternating classes (.first/.second) that referenced two different keyframe animations, rotate 0 to 360deg, and 360deg to 0 reversing the rotation.
See the Pen Alternating Animation Classes by Brandon Brule (@brandonbrule) on CodePen
/* Equal sized elements 25 x 25 */
.box{
margin:0;
display:block;
float:left;
width:25px;
height:25px;
}
/* Call rotate-right animation keyframes */
.first{
-webkit-animation: rotate-right 1.5s linear infinite normal;
background: #C8C8A9;
}
/* Call rotate-left animation keyframes */
.second{
-webkit-animation: rotate-left 1.5s linear infinite normal;
background: #F9CDAD;
}
/* Animation - Full 360deg rotation*/
@-webkit-keyframes rotate-right {
from{
-webkit-transform: rotate(0deg);
}
to{
-webkit-transform: rotate(360deg);
}
}
@-webkit-keyframes rotate-left {
from{
-webkit-transform: rotate(360deg);
}
to{
-webkit-transform: rotate(1deg);
}
}
Using 2 different coloured borders instead of a background colour and using a negative margin of -5px the css starts to look a little more interesting.
See the Pen Alternating Animation Classes by Brandon Brule (@brandonbrule) on CodePen
/* Overlap box with negative margin */
.box{
margin:-5px;
}
/* border instead of background-color */
.first{
border: 1px solid #333;
}
.second{
border: 1px solid #777;
}
See the Pen CSS Rotating Boxes by Brandon Brule (@brandonbrule) on CodePen
/* 4 colours for every 25 elements */
.colour-1{ background: rgba(105,210,231,0.15); }
.colour-2{ background: rgba(167,219,216,0.15); }
.colour-3{ background:rgba(243,134,48,0.15); }
.colour-4{ background:rgba(250,105,0,0.05); }
/* Percentage based negative margin/measurements */
.box{
border:1px solid #fff;
margin:0 -5%;
height:30%;
width:10%;
float:left;
}
With percentaged based negative margins and width/height and float:left styles the css begins to stack the animation. Taking advantage of the alpha in rgba - the same colour creates a visual stack. Each set of 25 elements has a colour, 4 colours in total. The layered effect comes from the alpha and negative margin.
The next step was creating a timer function that would create the elements, one after the other, delaying the start of the animation for each element.
The top animation is a result of the timer. The rest is the same, alternating rotations for every second element.
Unfortunately setInterval is quite resource heavy, I can only link to them here. I promise the effects are more interesting with the timer.
If you've ever needed a script that creates hundreds of elements with alternating classes, one after the other have I got the js for you. Feel free to use these in any way.