<div class="loader">
<i class="grey"></i>
</div>
html, body {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-color: #222d38;
}
.loader {
position: absolute;
font-size: 0;
line-height: 0;
top: 50%;
margin-top: -6px;
right: 0;
left: 0;
height: 12px;
}
.loader i {
width: 100%;
position: absolute;
top: 0;
left: 0;
height: 12px;
display: inline-block;
background-color: transparent;
}
.loader i:before, .loader i:after {
content: "";
width: 50%;
height: 100%;
position: absolute;
}
.loader i:before {
animation: slideLeft 1s 1s both cubic-bezier(0.34, 0.13, 0.14, 0.99);
animation: slideLeft 1s 1s both cubic-bezier(0.34, 0.13, 0.14, 0.99);
left: 0;
}
.loader i:after {
animation: slideRight 1s 1s both cubic-bezier(0.34, 0.13, 0.14, 0.99);
animation: slideRight 1s 1s both cubic-bezier(0.34, 0.13, 0.14, 0.99);
right: 0;
}
.loader i.grey:before, .loader i.grey:after {
background-color: #38434e;
}
.loader i.red:before, .loader i.red:after {
background-color: #ff5a69;
}
.loader i.green:before, .loader i.green:after {
background-color: #b4ff78;
}
.loader i.blue:before, .loader i.blue:after {
background-color: #5fb4ff;
}
.loader i.yellow:before, .loader i.yellow:after {
background-color: #ffff82;
}
.loader i.purple:before, .loader i.purple:after {
background-color: #c8affa;
}
@-webkit-keyframes slideLeft {
0% {
transform: translate(0, 0);
transform: translate(0, 0);
transform: translate(0, 0);
}
100% {
transform: translate(-100%, 0);
transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
}
@keyframes slideLeft {
0% {
transform: translate(0, 0);
transform: translate(0, 0);
transform: translate(0, 0);
}
100% {
transform: translate(-100%, 0);
transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
}
@-webkit-keyframes slideRight {
0% {
transform: translate(0, 0);
transform: translate(0, 0);
transform: translate(0, 0);
}
100% {
transform: translate(100%, 0);
transform: translate(100%, 0);
transform: translate(100%, 0);
}
}
@keyframes slideRight {
0% {
transform: translate(0, 0);
transform: translate(0, 0);
transform: translate(0, 0);
}
100% {
transform: translate(100%, 0);
transform: translate(100%, 0);
transform: translate(100%, 0);
}
}
class Loader
loaded: 0
total: 100
lastPicked: [ "grey" , "grey" , "grey" ]
colors: [
"red"
"green"
"blue"
"yellow"
"purple"
]
start: ->
@.getElements()
@.addListeners()
getElements: ->
@.el = document.getElementsByClassName("loader")[0]
addListeners: ->
@.loadSim = setInterval =>
@.loaded += 1 + Math.floor( Math.random() * 5 )
, 200
@.loadCheck = setInterval =>
if @.loaded < @.total
@.addBanner()
else
clearInterval( @.loadSim )
clearInterval( @.loadCheck )
, 200
addBanner: =>
banner = document.createElement("i")
color = @.lastPicked[0]
while @.lastPicked.indexOf( color ) isnt -1
color = @.colors[ Math.floor( Math.random() * @.colors.length)]
@.lastPicked.unshift( color )
@.lastPicked.pop()
banner.setAttribute( "class" , color )
@.el.insertBefore( banner , @.el.children[0] )
while @.el.children.length > 12
@.el.removeChild( @.el.children[12] )
App = new Loader
App.start()