How to display page loading indicator using spin.js

13,235

I created an object to control the spinning:

Rats.UI.LoadAnimation = {
    "start" : function(){
        var opts = {
            lines : 13, // The number of lines to draw
            length : 7, // The length of each line
            width : 4, // The line thickness
            radius : 10, // The radius of the inner circle
            corners : 1, // Corner roundness (0..1)
            rotate : 0, // The rotation offset
            color : '#000', // #rgb or #rrggbb
            speed : 1, // Rounds per second
            trail : 60, // Afterglow percentage
            shadow : false, // Whether to render a shadow
            hwaccel : false, // Whether to use hardware acceleration
            className : 'spinner', // The CSS class to assign to the spinner
            zIndex : 2e9, // The z-index (defaults to 2000000000)
            top : $(window).height()/2.5, // Manual positioning in viewport
            left : "auto"
        };
        var target = $("body")[0];
        return new Spinner(opts).spin(target);
     },
     "stop" : function(spinner){
        spinner.stop();
     }
};

When the DOM is loaded, I start spinning:

$(document).ready(function(){
        // Once the DOM is loaded, start spinning
        spinner = Rats.UI.LoadAnimation.start();

        pageUI();

});

When the entire page is loaded, I stop spinning:

$(window).load(function(){
        // Once the page is fully loaded, stop spinning
        Rats.UI.LoadAnimation.stop(spinner);
});

What's the difference between window.onload vs $(document).ready()

See the full code on my github repo:

Share:
13,235
ruhong
Author by

ruhong

Updated on June 15, 2022

Comments

  • ruhong
    ruhong about 2 years

    I am learning how to use Spin.js so that a loading indicator (the spinner) can be shown while the web page is loading.

    I got it working but I am not sure whether I am calling the spin/stop in the proper page lifecycle. Is it possible to show the spinner before $(window).ready ?

    <script type="text/javascript">
    var spinner;
    
    $(window).ready(function loadingAnimation() {
        var opts = {
          lines: 13, // The number of lines to draw
          length: 7, // The length of each line
          width: 4, // The line thickness
          radius: 10, // The radius of the inner circle
          corners: 1, // Corner roundness (0..1)
          rotate: 0, // The rotation offset
          color: '#000', // #rgb or #rrggbb
          speed: 1, // Rounds per second
          trail: 60, // Afterglow percentage
          shadow: false, // Whether to render a shadow
          hwaccel: false, // Whether to use hardware acceleration
          className: 'spinner', // The CSS class to assign to the spinner
          zIndex: 2e9, // The z-index (defaults to 2000000000)
          top: 'auto', // Top position relative to parent in px
          left: 'auto' // Left position relative to parent in px
        };
        var target = $("body")[0];
        spinner = new Spinner(opts).spin(target);
    });
    
    window.onload = function() {
        spinner.stop();
    };
    

    For the working example, please see http://sgratrace.appspot.com/industry.html