<div class='loader'></div>
@import 'compass/css3';

$n: 10;
$r: 1.5em;
$oa: -90deg;
$ba: 360deg/$n;
$hl: 2*$r;
$rc: $hl/sin(.5*$ba);
$ri: $hl/sin(.5*$ba);
$dx: $ri - 2*$r;
$sh: ();

@for $i from 0 to $n {
	$ca: $oa + $i*$ba;
	$sh: $sh, 
		$rc*cos($ca) $rc*sin($ca) currentcolor
}

body {
	display: grid;
	margin: 0;
	height: 100vh;
	filter: contrast(.65);
	
	&::before {
		padding: $rc + 2*$r;
		background: 
			linear-gradient(45deg, 
					#fafe92 9%, #ffb066, #ff9191, 
					#e679c8, #974bb5 91%);
		filter: contrast(1.5);
		content: ''
	}
}

div, ::before, ::after {
	grid-column: 1;
	grid-row: 1;
	place-self: center;
}

.loader {
	display: grid;
	place-self: stretch;
	background: #000;
	filter: contrast(13);
	mix-blend-mode: multiply;
	
	&::before, &::after {
		padding: $r;
		border-radius: 50%;
		color: #fff;
		filter: blur(13px);
		content: ''
	}
	
	&::before {
		box-shadow: $sh
	}
	
	&::after {
		padding: 2*$r;
		background: currentcolor;
		animation: mov 3s ease-in-out infinite
	}
}

@keyframes mov {
	0%, 100% { transform: translatey(-$rc) }
	25% { transform: translatey($rc) }
	50% { transform: translate(-$dx) }
	75% { transform: translate($dx) }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.