UPDATE – CSS Spinners and Loaders

Category: | Posted on:November 16, 2021
new loaders

I added some new CSS spinners and other loading effects to the CSS Animation Archive. I felt the loaders section in general could use a bit more fleshing out. Spinning loaders are an obligatory CSS effect so I had to throw a couple in there.

CSS Spinners

I added two spinners. The first is the classic rotating border trick. It’s just a square element with a circular border-radius, dark border color, and partial border in a different color that rotates in an infinite loop.
.standard-spinner {
animation: standardSpinner 1s linear infinite;
border: 10px solid $dark;
border-top-color: $darker;
border-radius: 50%;
box-sizing: border-box;
height: 75px;
width: 75px;
}
@keyframes standardSpinner {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

The second spinner is a variation on this one by The Net Ninja minus the alternation. I liked the simultaneous pulse better. This one employs a pair of internal <div> elements with opposing borders.
.pulsing-spinner {
height: 75px;
position: relative;
width: 75px;
div {
animation: pulsingSpinner 1s linear infinite;
border: 10px solid transparent;
border-top-color: $dark;
border-radius: 50%;
box-sizing: border-box;
height: 100%;
position: absolute;
width: 100%;
}
div:nth-child(2) {
border: 10px solid transparent;
border-bottom-color: $dark;
}
}
@keyframes pulsingSpinner {
0% {
transform: rotate(0deg);
border-width: 10px;
}
50% {
transform: rotate(180deg);
border-width: 1px;
}
100% {
transform: rotate(360deg);
border-width: 10px;
}
}

I also threw in a bouncy ball and flipper for the heck of it.

Other Revisions

For performance purposes I hid the loaders that were just glitch, neon, and rainbow variations of the dancing dots. They still exist in the code but are hidden with comments. I also went back and refactored some of the existing animations to use the alternate property, which allowed me to clean up some redundant bits of code within the keyframes.

Tags: , ,

Related Logs


  • UPDATE – Simple Responsive Portfolio Svelte

    January 26, 2026

    Refactored the code in the Simple Responsive Portfolio Svelte to use updated Svelte 5 syntax for state and props. Svelte 5 Syntax Svelte 5 retired the prior export syntax. Before, the parent would establish state with a let variable declaration: A child component could then receive it with an export statement: The new syntax for […]

    Continue Reading
  • NEW PROJECT – Simple Responsive Portfolio Svelte

    January 23, 2026

    The Simple Responsive Portfolio Svelte is a remake of my Simple Responsive Portfolio project in Svelte 5. Objective I need to brush up on my Svelte skills since it updated to v5. My last foray was a photo album for my wedding that used Svelte Cloudinary to handle uploads. This project was just a simple […]

    Continue Reading
  • RIP Glitch.com

    January 12, 2026

    Glitch.com, the service I was using to host some of my projects for free, has terminated its hosting services. I didn’t find out until after the grace period, so everything I had up there is gone, but it was all just copies of existing repos anyway. I’ve had to migrate the original Game Picker 9000, […]

    Continue Reading