CSS
语言:
CSSSCSS
确定
/* Rotation angle for the current item */
/* Angle between two items */
html,
body {
height: 100%;
}
body {
background: black;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.container {
width: 400px;
height: 400px;
position: relative;
border-radius: 50%;
-webkit-animation: spin 25s linear infinite;
animation: spin 25s linear infinite;
}
.subcontainer {
width: 25px;
height: 25px;
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.balls {
width: 25px;
height: 25px;
position: absolute;
}
.balls:nth-child(1):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.07s;
animation-delay: 0.07s;
}
.balls:nth-child(1) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(24deg);
transform: rotateZ(24deg);
}
.balls:nth-child(2):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.14s;
animation-delay: 0.14s;
}
.balls:nth-child(2) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(48deg);
transform: rotateZ(48deg);
}
.balls:nth-child(3):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.21s;
animation-delay: 0.21s;
}
.balls:nth-child(3) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(72deg);
transform: rotateZ(72deg);
}
.balls:nth-child(4):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.28s;
animation-delay: 0.28s;
}
.balls:nth-child(4) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(96deg);
transform: rotateZ(96deg);
}
.balls:nth-child(5):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.35s;
animation-delay: 0.35s;
}
.balls:nth-child(5) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(120deg);
transform: rotateZ(120deg);
}
.balls:nth-child(6):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.42s;
animation-delay: 0.42s;
}
.balls:nth-child(6) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(144deg);
transform: rotateZ(144deg);
}
.balls:nth-child(7):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.49s;
animation-delay: 0.49s;
}
.balls:nth-child(7) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(168deg);
transform: rotateZ(168deg);
}
.balls:nth-child(8):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.56s;
animation-delay: 0.56s;
}
.balls:nth-child(8) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(192deg);
transform: rotateZ(192deg);
}
.balls:nth-child(9):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.63s;
animation-delay: 0.63s;
}
.balls:nth-child(9) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(216deg);
transform: rotateZ(216deg);
}
.balls:nth-child(10):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.7s;
animation-delay: 0.7s;
}
.balls:nth-child(10) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(240deg);
transform: rotateZ(240deg);
}
.balls:nth-child(11):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.77s;
animation-delay: 0.77s;
}
.balls:nth-child(11) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(264deg);
transform: rotateZ(264deg);
}
.balls:nth-child(12):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.84s;
animation-delay: 0.84s;
}
.balls:nth-child(12) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(288deg);
transform: rotateZ(288deg);
}
.balls:nth-child(13):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.91s;
animation-delay: 0.91s;
}
.balls:nth-child(13) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(312deg);
transform: rotateZ(312deg);
}
.balls:nth-child(14):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 0.98s;
animation-delay: 0.98s;
}
.balls:nth-child(14) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(336deg);
transform: rotateZ(336deg);
}
.balls:nth-child(15):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 1.05s;
animation-delay: 1.05s;
}
.balls:nth-child(15) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(360deg);
transform: rotateZ(360deg);
}
.balls:nth-child(16):after {
width: 25px;
height: 25px;
border-radius: 50%;
display: block;
content: "";
-webkit-animation: move 2s linear infinite;
animation: move 2s linear infinite;
-webkit-animation-delay: 1.12s;
animation-delay: 1.12s;
}
.balls:nth-child(16) {
left: -200px;
-webkit-transform-origin: 212.5px 12.5px;
-ms-transform-origin: 212.5px 12.5px;
transform-origin: 212.5px 12.5px;
-webkit-transform: rotateZ(384deg);
transform: rotateZ(384deg);
}
.balls:nth-child(3n+1):after {
background-color: #faaa13;
color: #faaa13;
}
.balls:nth-child(3n+2):after {
background-color: #f03e31;
color: #f03e31;
}
.balls:nth-child(3n+3):after {
background-color: #10a0ab;
color: #10a0ab;
}
@-webkit-keyframes spin {
from {
-webkit-transform: rotate(-360deg);
transform: rotate(-360deg);
}
}
@keyframes spin {
from {
-webkit-transform: rotate(-360deg);
transform: rotate(-360deg);
}
}
@-webkit-keyframes move {
0% {
-webkit-transform: translateX(0px);
transform: translateX(0px);
box-shadow: -2px 0px 2px, 5px 0px 2px, 10px 0px 2px, 15px 0px 2px, 20px 0px 2px, 25px 0px 2px, 30px 0px 2px;
}
23% {
box-shadow: none;
}
25% {
box-shadow: -2px 0px 2px, 5px 0px 2px, 10px 0px 2px, 15px 0px 2px, 20px 0px 2px, 25px 0px 2px, 30px 0px 2px;
-webkit-transform: translateX(400px);
transform: translateX(400px);
}
48% {
box-shadow: none;
}
50% {
-webkit-transform: translateX(400px);
transform: translateX(400px);
}
75% {
-webkit-transform: translateX(400px);
transform: translateX(400px);
}
100% {
-webkit-transform: translateX(0px);
transform: translateX(0px);
}
}
@keyframes move {
0% {
-webkit-transform: translateX(0px);
transform: translateX(0px);
box-shadow: -2px 0px 2px, 5px 0px 2px, 10px 0px 2px, 15px 0px 2px, 20px 0px 2px, 25px 0px 2px, 30px 0px 2px;
}
23% {
box-shadow: none;
}
25% {
box-shadow: -2px 0px 2px, 5px 0px 2px, 10px 0px 2px, 15px 0px 2px, 20px 0px 2px, 25px 0px 2px, 30px 0px 2px;
-webkit-transform: translateX(400px);
transform: translateX(400px);
}
48% {
box-shadow: none;
}
50% {
-webkit-transform: translateX(400px);
transform: translateX(400px);
}
75% {
-webkit-transform: translateX(400px);
transform: translateX(400px);
}
100% {
-webkit-transform: translateX(0px);
transform: translateX(0px);
}
}