Ring spinner loading
Ring spinner loading: a CSS button. Copy the rules, or the prompt that rebuilds it.
CSS
.btn-082 {
display: inline-flex;
align-items: center;
gap: 10px;
font: 600 14px/1 system-ui,sans-serif;
color: #fff;
background: #2563eb;
border: 0;
border-radius: 8px;
padding: 12px 22px;
cursor: progress;
opacity: .85
}
.btn-082 i {
width: 16px;
height: 16px;
border: 2.5px solid rgba(255,255,255,.35);
border-top-color: #fff;
border-radius: 50%;
animation: btn-082-r .7s linear infinite
}
@keyframes btn-082-r {
to {
transform: rotate(360deg)
}
}
.btn-082:hover {
background: #2563eb
}
.btn-082:focus-visible {
outline: 2px solid #2563eb;
outline-offset: 3px
}
.btn-082:active {
transform: none
}
@media (prefers-reduced-motion: reduce) {
.btn-082, .btn-082 * { animation: none; transition: none; }
}
HTML
<button class="btn-082" disabled><i></i>Saving</button>Prompt
A blue #2563eb loading button, disabled, at 85% opacity, white 14px semibold text "Saving" with a 16px spinning ring on the left: a 2.5px circle border at 35% white with a solid white top segment rotating once every 700ms. 8px radius, 12px by 22px padding, cursor progress. Hover and active change nothing.