svg loader
by Alexandru Gatea
HTML
<div class="loader">
<svg id="loaderShape" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 109.4">
<path d="M0,0C121.44,0,101.4,109.4,250,109.4S378.56,0,500,0Z" />
</svg>
<div class="loader-content">
<p class="loader-text">Gathering Data</p>
<div class="loader-spinner">
<span class="loader-percent">100 <span>%</span></span>
<!-- <div class="sk-cube-grid">
<div class="sk-cube sk-cube1"></div>
<div class="sk-cube sk-cube2"></div>
<div class="sk-cube sk-cube3"></div>
<div class="sk-cube sk-cube4"></div>
<div class="sk-cube sk-cube5"></div>
<div class="sk-cube sk-cube6"></div>
<div class="sk-cube sk-cube7"></div>
<div class="sk-cube sk-cube8"></div>
<div class="sk-cube sk-cube9"></div>
</div> -->
<div class="planet"></div>
</div>
</div>
</div>
SCSS
@import url('https://fonts.googleapis.com/css2?family=Lato&family=Raleway:wght@400;500;600;700;900&display=swap');
$loaderWidth: minmax(350px, 26vw);
$loaderContentWidth: minmax(200px, 15vw);
$brand-dark: #0e0727;
$brand-dark-medium: #221c3a;
$brand-light: #a59fb8;
$brand-accent: #42B98B;
$brand-title: 'Raleway',
sans-serif;
$brand-text: 'Lato',
sans-serif;
.loader {
position: fixed;
display: grid;
grid-template-columns: $loaderWidth;
top: 0;
left: 50%;
transform: translateX(-50%);
transform-origin: top center;
overflow: hidden;
#loaderShape {
path {
fill: $brand-dark;
}
}
&-content {
position: absolute;
display: grid;
grid-template-columns: $loaderContentWidth;
grid-gap: 10px;
align-items: center;
justify-items: center;
top: 0;
left: 50%;
transform: translateX(-50%);
color: $brand-light;
padding: 10px 0;
}
&-text {
font-family: $brand-title;
text-transform: uppercase;
font-size: 12px;
line-height: 12px;
font-weight: 900;
letter-spacing: 2px;
text-align: center;
}
&-percent {
font-family: $brand-text;
font-size: 12px;
position: absolute;
}
&-spinner {
display: flex;
align-items: center;
justify-content: center;
}
}
.sk-cube-grid {
width: 44px;
height: 44px;
border-radius: 44px;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-gap: 1px;
}
.sk-cube-grid .sk-cube {
width: 100%;
height: 100%;
border-radius: 2px;
background-color: $brand-accent;
animation: sk-cubeGridScaleDelay 0.1s infinite linear;
}
.sk-cube-grid .sk-cube1 {background-color: $brand-light; animation-delay: 0.2s; }
.sk-cube-grid .sk-cube2 {background-color: $brand-accent;animation-delay: 0.3s; }
.sk-cube-grid .sk-cube3 {background-color: $brand-light;animation-delay: 0.4s; }
.sk-cube-grid .sk-cube4 {background-color: $brand-accent;animation-delay: 0.1s; }
.sk-cube-grid .sk-cube5 {background-color:...