This loading animation can be used and personalized for every website ! Enjoy it ;)
A Pen by Louis Hoebregts on CodePen.
This loading animation can be used and personalized for every website ! Enjoy it ;)
A Pen by Louis Hoebregts on CodePen.
var ww = window.innerWidth, wh = window.innerHeight; | |
var paper = Raphael(0,0, "100%", "100%"); | |
var circles = [], | |
pos = [], | |
count = 0, | |
timer; | |
function Ctrl(){ | |
this.Number = 12; | |
this.Radius = 10; | |
this.Size = 30; | |
this.Speed = 600; | |
this.Delay = 150; | |
} | |
var ctrl = new Ctrl; | |
var gui = new dat.GUI; | |
gui.add(ctrl, 'Number', 3, 50).step(1).onChange(reset); | |
gui.add(ctrl, 'Radius', 1, 100).onChange(reset); | |
gui.add(ctrl, 'Size', 5, 80).onChange(reset); | |
gui.add(ctrl, 'Speed', 100, 2000).onChange(reset); | |
gui.add(ctrl, 'Delay', 20, 1200).onChange(reset); | |
var controller; | |
function reset(){ | |
paper.remove(); | |
paper = Raphael(0,0, "100%", "100%"); | |
circles = []; | |
timer = clearTimeout(timer); | |
count = 0; | |
pos = []; | |
draw(); | |
} | |
function draw(){ | |
timer = clearTimeout(timer); | |
for(var i=0;i<ctrl.Number || loopCi();i++){ | |
circles[i] = paper.circle(ww/2,wh/2,ctrl.Radius); | |
circles[i].transform("T0,-"+(wh/150)*ctrl.Size); | |
circles[i].transform("...R"+(360/ctrl.Number*i)+","+ww/2+","+wh/2); | |
circles[i].attr({fill:Raphael.hsl2rgb((360/ctrl.Number*i),100,50)}); | |
pos[i] = [circles[i].getBBox().cx,circles[i].getBBox().cy]; | |
} | |
paper.forEach(function(circle){circle.attr({stroke:"none"})}); | |
} | |
function loopCi(){ | |
for(var j=0;j<ctrl.Number;j++){ | |
circles[j].animate(rotateAnim(j).delay(j*ctrl.Delay)); | |
} | |
count++; | |
timer = setTimeout(loopCi,ctrl.Delay*ctrl.Number+ctrl.Speed) | |
} | |
function rotateAnim(k){ | |
var center = (count*2)+1+k<ctrl.Number?(count*2)+1+k:((count*2)+1+k)%ctrl.Number; | |
return Raphael.animation({transform: ("...R"+(180+360/ctrl.Number)+","+pos[center][0]+","+pos[center][1])}, ctrl.Speed); | |
} | |
draw(); |
.dg.ac{z-index: 100 !important;} |