<div class="loader"></div>
.loader {
--s: 70px;
--g: 15px;
width: calc(3*(1.353*var(--s) + var(--g)));
display: grid;
justify-items: end;
aspect-ratio: 3;
overflow: hidden;
--_m: linear-gradient(90deg,#0000,#000 30px calc(100% - 30px),#0000);
-webkit-mask: var(--_m);
mask: var(--_m);
}
.loader:before {
content: "";
width: calc(4*100%/3);
background:
conic-gradient(from -90deg at var(--s) calc(0.353*var(--s)),
#fff 135deg,#666 0 270deg,#aaa 0);
--_m:
linear-gradient(to bottom right,
#0000 calc(0.25*var(--s)),#000 0 calc(100% - calc(0.25*var(--s)) - 1.414*var(--g)),#0000 0),
conic-gradient(from -90deg at right var(--g) bottom var(--g),#000 90deg,#0000 0);
-webkit-mask: var(--_m);
mask: var(--_m);
background-size: calc(100%/4) 100%;
-webkit-mask-size: calc(100%/4) 100%;
mask-size: calc(100%/4) 100%;
-webkit-mask-composite: source-in;
mask-composite: intersect;
animation: load 1s infinite linear;
}
@keyframes load {
to {transform:translate(calc(100%/4))}
}
body {
margin: 0;
background: #000;
min-height: 100vh;
display: grid;
place-content: center;
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.