You can achieve that effect with linear-gradients. A single gradient can be a 2px line when it's set to transparency from 0% to 50% - 1px, to a color at 50%, and transparency again from 50% + 1px till the end.
Since you want 8 parts you need 4 lines. Each part has to be 360deg / 8
degrees apart from each other, so 45deg
.
Also, not the lines, but the tiles themselves are at the 0 / 90 degree mark, so there needs to be an offset of 45deg / 2
-> 22.5deg
As you can stack as many gradients as you want in a background, one element is enough to draw the eight lines, each 45deg
apart from each other with an offset of 22.5deg
.loader-outer {
width: 300px;
height: 300px;
background: linear-gradient(
22.5deg,
transparent calc(50% - 1px),
#fff 50%,
transparent calc(50% + 1px)
),
linear-gradient(
-22.5deg,
transparent calc(50% - 1px),
#fff 50%,
transparent calc(50% + 1px)
),
linear-gradient(
112.5deg,
transparent calc(50% - 1px),
#fff 50%,
transparent calc(50% + 1px)
),
linear-gradient(
68.5deg,
transparent calc(50% - 1px),
#fff 50%,
transparent calc(50% + 1px)
);
background-color: gray;
border-radius: 50%;
}
<div class="loader-outer"></div>
You said you don't need transparency, so you can just take the inner part of your visualization and draw it over that circle with the lines.