/* Variables */ * { --loaderDivCol: var(--color-loader-text); --circR: 1rem; --circD: 2rem; --circ6D: 12rem; --timing: ease-in-out; --fullCycle: 5s; } .loader.hidden { display: none; } .loader { position: relative; box-sizing: border-box; height: var(--circD); width: var(--circ6D); margin: calc(var(--circD) * 3) var(--circD); padding: var(--circR) 0; } .loader > * { position: absolute; box-sizing: border-box; height: 0; width: calc(2 * var(--circD)); opacity: 0; display: flex; justify-content: space-between; --keyframe-sequence: "loading0"; --delay: 0; --animation: var(--keyframe-sequence) var(--fullCycle) var(--timing) calc(0s - var(--fullCycle) * (1 - (var(--delay)) / 8) ) infinite; -webkit-animation: var(--animation); -moz-animation: var(--animation); -ms-animation: var(--animation); -o-animation: var(--animation); animation: var(--animation); } .loader div::before, .loader div::after { content: ""; display: block; box-sizing: border-box; width: var(--circD); height: var(--circD); border: 1px solid var(--loaderDivCol); background: var(--loaderDivCol); border-radius: 100%; position: absolute; top: calc(0px - var(--circR)); } .loader div::before { left: calc(0px - var(--circR)); } .loader div::after { right: calc(0px - var(--circR)); } @keyframes loading0 { 0% { transform: rotate(0deg); opacity: 1; } 12.52% { opacity: 1; } 12.56% { opacity: 0; } 99.7% { opacity: 0; } 100% { opacity: 1; } } @keyframes loading2 { 0% { transform: rotate(0deg); opacity: 1; } 7% { transform: rotate(180deg); } 12.47% { opacity: 1; } 12.56% { opacity: 0; } 24.6% { opacity: 0; } 24.97% { opacity: 1; } 37.52% { opacity: 1; } 37.57% { opacity: 0; transform: rotate(180deg); } 99.95% { opacity: 0; transform: rotate(0deg); } 100% { opacity: 1; } } @keyframes loading3 { 0% { transform: rotate(0deg); opacity: 1; } 7% { transform: rotate(180deg); } 12.47% { opacity: 1; } 12.52% { opacity: 1; } 12.56% { opacity: 0; } 37.4% { opacity: 0; } 37.47% { opacity: 1; } 50.02% { opacity: 1; } 50.1% { opacity: 0; transform: rotate(180deg); } 99.8% { opacity: 0; transform: rotate(0deg); } 100% { opacity: 1; } } @keyframes loading5 { 0% { opacity: 1; transform: rotate(0deg); } 7% { transform: rotate(180deg); } 12.47% { opacity: 1; } 12.52% { opacity: 1; } 12.58% { opacity: 0; } 62.4% { opacity: 0; } 62.47% { opacity: 1; } 75.02% { opacity: 1; } 75.1% { opacity: 0; transform: rotate(180deg); } 99.7% { transform: rotate(0deg); opacity: 0; } 100% { opacity: 1; transform: rotate(0deg); } } @keyframes loading6 { 0% { transform: rotate(0deg); opacity: 1; } 7% { transform: rotate(180deg); } 12.47% { opacity: 1; } 12.52% { opacity: 1; } 12.57% { opacity: 0; } 74.85% { opacity: 0; } 74.97% { opacity: 1; } 87.52% { opacity: 1; } 87.6% { opacity: 0; transform: rotate(180deg); } 99.8% { opacity: 0; transform: rotate(0deg); } 100% { opacity: 1; } } .loader :nth-child(1) { width: 66.66%; --keyframe-sequence: "loading5"; --delay: 0; } .loader :nth-child(2) { width: 66.66%; margin-left: 0; --keyframe-sequence: "loading2"; --delay: 0; } .loader :nth-child(3) { width: 33.33%; margin-left: 33.33%; --keyframe-sequence: "loading2"; --delay: 1; } .loader :nth-child(4) { width: 66.66%; margin-left: 33.33%; --keyframe-sequence: "loading6"; --delay: 2; } .loader :nth-child(5) { width: 100%; --keyframe-sequence: "loading6"; --delay: 3; } .loader :nth-child(6) { width: 100%; --keyframe-sequence: "loading3"; --delay: 3; } .loader :nth-child(7) { width: 33.33%; --keyframe-sequence: "loading3"; --delay: 4; } .loader :nth-child(8) { width: 66.66%; margin-left: 33.33%; --keyframe-sequence: "loading3"; --delay: 5; } .loader :nth-child(9) { width: 33.33%; margin-left: 33.33%; --keyframe-sequence: "loading5"; --delay: 6; } .loader :nth-child(10) { width: 33.33%; margin-left: 66.66%; --keyframe-sequence: "loading5"; --delay: 7; }