CSS3 Spinner

Uses multiple backgrounds, css gradients and animations to render.

by Jens Grochtdreis

HTML

<span class="loader">loading…</span>

CSS

body { background: #000; }
.loader {
    width: 100px;
    height: 100px;
    white-space: nowrap;
    text-indent: 110px;
    overflow: hidden;
    background: indianred;
    background-image: -webkit-linear-gradient(transparent, indianred 50%), -webkit-linear-gradient(0, indianred 50%, #000 50%, indianred);
    background-image: -moz-linear-gradient(transparent, indianred 50%), -moz-linear-gradient(0, indianred 50%, #000 50%, indianred);    
    background-image: -o-linear-gradient(transparent, indianred 50%), -o-linear-gradient(0, indianred 50%, #000 50%, indianred);
    background-image: -ms-linear-gradient(transparent, indianred 50%), -ms-linear-gradient(0, indianred 50%, #000 50%, indianred);
    background-image: linear-gradient(transparent, indianred 50%), linear-gradient(0, indianred 50%, #000 50%, indianred);
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -50px;
    border-radius: 100px;
    -webkit-animation: m 2s linear infinite;
    -moz-animation: m 2s linear infinite;    
}

.loader:before {
    position: absolute;
    content: "";
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background: -webkit-radial-gradient(closest-side, black 60%, transparent 61%);    
    background: -moz-radial-gradient(closest-side, black 60%, transparent 61%);        
    background: -o-radial-gradient(closest-side, black 60%, transparent 61%);        
    background: radial-gradient(closest-side, black 60%, transparent 61%);        
    border-radius: 100px;    
}

@-webkit-keyframes m { 0% { -webkit-transform: rotate(-360deg); } }
@-moz-keyframes m { 0% { -moz-transform: rotate(-360deg); } }

JavaScript

//Original: http://jsfiddle.net/nimbu/Lnba9/