/* css-loading-spinners.css Copyright (c) Ian A. Cook MIT License https://github.com/nai888/css-loading-spinners */ :root { --cls-color: #558B6E; --cls-sec-color: #EEEEEE; --cls-size: 5rem; --cls-margin: 1rem; --cls-speed: 2s; } @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); } } @keyframes spin { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @-webkit-keyframes flip-flop { 0%, 100% { -webkit-transform: perspective(calc(var(--cls-size) / 5 * 8)) rotateY(0deg); } 50% { -webkit-transform: perspective(calc(var(--cls-size) / 5 * 8)) rotateY(180deg); } } @keyframes flip-flop { 0%, 100% { -webkit-transform: perspective(calc(var(--cls-size) / 5 * 8)) rotateY(0deg); transform: perspective(calc(var(--cls-size) / 5 * 8)) rotateY(0deg); } 50% { -webkit-transform: perspective(calc(var(--cls-size) / 5 * 8)) rotateY(180deg); transform: perspective(calc(var(--cls-size) / 5 * 8)) rotateY(180deg); } } @-webkit-keyframes signal { 0% { -webkit-transform: scale(0); -webkit-opacity: 0; } 50% { -webkit-opacity: 1; } 100% { -webkit-transform: scale(1); -webkit-opacity: 0; } } @keyframes signal { 0% { -webkit-transform: scale(0); transform: scale(0); -webkit-opacity: 0; opacity: 0; } 50% { -webkit-opacity: 1; opacity: 1; } 100% { -webkit-transform: scale(1); transform: scale(1); -webkit-opacity: 0; opacity: 0; } } @-webkit-keyframes grow-shrink { 0%, 100% { -webkit-transform: scale(0); } 50% { -webkit-transform: scale(1); } } @keyframes grow-shrink { 0%, 100% { -webkit-transform: scale(0); transform: scale(0); } 50% { -webkit-transform: scale(1); transform: scale(1); } } [class^="cls-"] { box-sizing: border-box; } .cls-spinner { display: block; position: relative; width: var(--cls-size); height: var(--cls-size); margin: var(--cls-margin); } .cls-flip-flop { -webkit-animation: flip-flop calc(var(--cls-speed) / 2) ease infinite; animation: flip-flop calc(var(--cls-speed) / 2) ease infinite; } .cls-spin { -webkit-animation: spin var(--cls-speed) linear infinite; animation: spin var(--cls-speed) linear infinite; } .cls-circle { border-width: calc(var(--cls-size) / 5 * 0.75); border-style: solid; border-color: var(--cls-sec-color); border-top-color: var(--cls-color); border-radius: 50%; width: 100%; height: 100%; } .cls-dual-circle { border-width: calc(var(--cls-size) / 5 * 0.75); border-style: solid; border-color: var(--cls-color) transparent; border-radius: 50%; width: 100%; height: 100%; } .cls-bowtie, .cls-bowtie-v { border-width: calc(var(--cls-size) / 2); border-style: solid; border-color: transparent var(--cls-color); border-radius: 50%; } .cls-bowtie-v { border-color: var(--cls-color) transparent; } .cls-square { width: 100%; height: 100%; background-color: var(--cls-color); } .cls-signal, .cls-triple-signal, .cls-triple-signal::before, .cls-triple-signal::after { border-width: calc(var(--cls-size) / 25); border-style: solid; border-color: var(--cls-color); border-radius: 50%; width: 100%; height: 100%; opacity: 0; position: absolute; } .cls-triple-signal::before, .cls-triple-signal::after, .cls-rings::before, .cls-rings::after { content: ''; top: 50%; left: 50%; margin: calc(var(--cls-size) / -2) 0 0 calc(var(--cls-size) / -2); } .cls-signal, .cls-triple-signal, .cls-triple-signal::before, .cls-triple-signal::after { -webkit-animation: signal calc(var(--cls-speed) / 2) ease-out infinite; animation: signal calc(var(--cls-speed) / 2) ease-out infinite; } .cls-triple-signal::before { -webkit-animation-delay: calc(var(--cls-speed) / 20); animation-delay: calc(var(--cls-speed) / 20); } .cls-triple-signal::after { -webkit-animation-delay: calc(var(--cls-speed) * 3 / 20); animation-delay: calc(var(--cls-speed) * 3 / 20); } .cls-ring, .cls-rings, .cls-rings::before, .cls-rings::after { border-width: calc(var(--cls-size) / 25); border-style: solid; border-color: var(--cls-color); border-radius: 50%; width: 100%; height: 100%; } .cls-rings, .cls-rings::before, .cls-rings::after { position: absolute; } .cls-ring, .cls-rings, .cls-rings::before, .cls-rings::after { -webkit-animation: grow-shrink var(--cls-speed) ease-in-out infinite; animation: grow-shrink var(--cls-speed) ease-in-out infinite; } .cls-rings::before { -webkit-animation-delay: calc(var(--cls-speed) / -4); animation-delay: calc(var(--cls-speed) / -4); } .cls-rings::after { -webkit-animation-delay: calc(var(--cls-speed) / 4); animation-delay: calc(var(--cls-speed) / 4); }