JS Loading

Windows phone style loading

by Avinashullal

HTML

<div id="Loading">
    <div id="Text">Loading</div>
    <div id="dotContainer">
        <div class="dot"></div>
        <div class="dot"></div>
        <div class="dot"></div>
        <div class="dot"></div>
        <div class="dot"></div>
    </div>
</div>

CSS

body {
    background: black;
}
#Loading #Text {
    color: White;
    font-family: Raleway, Segoe UI Light;
    font-size: 3em;
    font-weight: 100;
    width: 200px;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}
#Loading #dotContainer {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
    height: 10px;
}
#Loading #dotContainer .dot {
    position: absolute;
    top: 0;
    width: 10px;
    height: 10px;
    margin-left: -5px;
    left: 0;
    background: #2cafe3;
    /* Old browsers */
    /* IE9 SVG, needs conditional override of 'filter' to 'none' */
    background: url(data:image/svg+xml;
    base64, PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzJjYWZlMyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM0OWMwZjAiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
    background: -moz-linear-gradient(top, #2cafe3 0%, #49c0f0 100%);
    /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2cafe3), color-stop(100%, #49c0f0));
    /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #2cafe3 0%, #49c0f0 100%);
    /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #2cafe3 0%, #49c0f0 100%);
    /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #2cafe3 0%, #49c0f0 100%);
    /* IE10+ */
    background: linear-gradient(to bottom, #2cafe3 0%, #49c0f0 100%);
    /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2cafe3',...

JavaScript

var loading;
$(document).ready(function () {
    loading = true;
    $(".dot").each(function (index) {
        moveDot($(this), index);
    });
});

function sinh(aValue) {
    var myTerm1 = Math.pow(Math.E, aValue);
    var myTerm2 = Math.pow(Math.E, -aValue);
    return (myTerm1 - myTerm2) / 2;
}

$.easing.speedInOut = function (x, t, b, c, d) {
    return (sinh((x - 0.5) * 5) + sinh(-(x - 0.5)) + (sinh(2.5) + Math.sin(-2.5))) / (sinh(2.5) * 1.82);
};

function moveDot(dotItem, delay) {
    if (loading) {
        dotItem.delay(delay * 200).css('left', '0%').animate({
            left: '100%'
        }, 2000, 'speedInOut', function () {
            moveDot(dotItem, 0);
        });
    }
}