Spinners
Spinners is a JavaScript library that creates pixel-perfect cross-browser loading icons through Canvas. Written for use in Lightview and Tipped, feel free to use it in your own projects.
Demo (GUI): http://projects.nickstakenburg.com/spinners
Installation
Spinners is based on jQuery, it also requires ExplorerCanvas to work in Internet Explorer 8 and below, include both scripts above Spinners.
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script> <!--[if lt IE 9]> <script type="text/javascript" src="/js/excanvas.js"></script> <![endif]--> <script type="text/javascript" src="/js/spinners.min.js"></script>
Usage
Spinners can be created using a DOM Node or a CSS Selector. Spinners start out in a paused state because animation takes up a small amount of browser resources, because of this it's recommended to only animate spinners when they are visible.
var spinner = Spinners.create(document.getElementById('mySpinner')).play(); // will start the animation spinner.pause(); // pauses the spinner // multiple spinners using a CSS Selector var spinners = Spinners.create('.loading').play(); spinners.pause();
Options can be used to customize the spinners:
Spinners.create('.loading', { radius: 22, dashes: 30, width: 2.5, height: 10, opacity: 1, padding: 3, rotation: 600, color: '#000000' }).play();
Collections
Spinners.create
returns a Collection object that controls a number of spinners.
var spinners = Spinners.create('.loading'); spinners.play();
Spinners created using Spinners.create
can be retrieved using Spinners.get
, this removes the need to store the Collection.
Spinners.create('.loading'); Spinners.get('.loading').pause();
Controls
The methods play
, pause
, stop
, toggle
and remove
are available on Collections returned by Spinners.create
and Spinners.get
.
Spinners.create('.loading').play(); Spinners.get('.loading').pause(); Spinners.get('.loading').stop(); Spinners.get('.loading').remove(); Spinners.get(document.getElementById('mySpinner')).toggle();
They can also be used directly on the Spinners
object using a CSS Selector or a DOM Node, this allows chaining on different Collections.
Spinners.create('#first .loading').play(); Spinners.create('#second .loading'); Spinners.play('#first .loading').pause('#second .loading'); Spinners.remove('#first .loading').play('#second .loading'); Spinners.toggle(document.getElementById('mySpinner'));
Positioning
Options can be changed after initialization using setOptions
.
var spinners = Spinners.create('.loading'); spinners.setOptions({ color: '#ff0000' });
Removal
The remove
method will remove the created spinners from the DOM.
Spinners.get('.loading').remove();
It might be easier to just remove elements from the DOM followed by a call to Spinners.removeDetached
, this function is also called automatically each time a new spinner is created.
// after deleting elements with spinners or doing some ajax updates Spinners.removeDetached();
Positioning
Use center
to center the element that holds the spinner within its parent. This is done using absolute positioning, the parent element will be given position:relative
. In this example #spinner will be given position:absolute
and its parent position:relative
.
Spinners.create('#spinner').center().play();
Dimensions
Spinners.getDimensions
will return the dimensions of a created spinner. This could be useful when center()
isn't used to position the spinner.
var dimensions = Spinners.getDimensions(document.getElementById('mySpinner')); // dimensions; //--> { width: 28, height: 28 }