var app = angular.module('loaderDirectiveSample', []);
app.controller('MainCtrl', function($scope) {
});
<!DOCTYPE html>
<html ng-app="loaderDirectiveSample">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.25/angular.js" data-semver="1.2.25"></script>
<script src="app.js"></script>
<script src="spinnerLoader.js"></script>
</head>
<body ng-controller="MainCtrl">
<h2>Spinner Loader AngularJS Directive Sample</h2>
<hr/>
<spinner-loader sl-visible="true" sl-size="tiny"></spinner-loader>
<br/><br/>
<spinner-loader sl-visible="true" sl-size="small"></spinner-loader>
<br/><br/><br/>
<spinner-loader sl-visible="true" sl-size="medium"></spinner-loader>
<br/><br/><br/><br/>
<spinner-loader sl-visible="true" sl-size="large"></spinner-loader>
<br/><br/><br/><br/>
</body>
</html>
.spinnerLoad {
-webkit-animation: spinner_anim 0.5s infinite steps(12);
-webkit-transform-origin: 0.10em 0.9em;
-ms-animation: spinner_anim 1s infinite steps(12);
-ms-transform-origin: 0.10em 0.9em;
}
.tinySize {
font-size: 10px;
}
.smallSize {
font-size: 15px;
}
.mediumSize {
font-size: 25px;
}
.largeSize {
font-size: 40px;
}
.bar {
position: absolute;
width: .21em;
height: .5em;
background: #ff0000;
-webkit-border-radius: .2em;
-webkit-transform-origin: 0.1em 0.9em;
-ms-border-radius: .2em;
-ms-transform-origin: 0.1em 0.9em;
}
#stepOne {
background: #ddd;
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
}
#stepTwo {
background: #ccc;
-webkit-transform: rotate(30deg);
-ms-transform: rotate(30deg);
}
#stepThree {
background: #bbb;
-webkit-transform: rotate(60deg);
-ms-transform: rotate(60deg);
}
#stepFour {
background: #aaa;
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
}
#stepFive {
background: #999;
-webkit-transform: rotate(120deg);
-ms-transform: rotate(120deg);
}
#stepSix {
background: #888;
-webkit-transform: rotate(150deg);
-ms-transform: rotate(150deg);
}
#stepSeven {
background: #777;
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
}
#stepEight {
background: #666;
-webkit-transform: rotate(210deg);
-ms-transform: rotate(210deg);
}
#stepNine {
background: #555;
-webkit-transform: rotate(240deg);
-ms-transform: rotate(240deg);
}
#stepTen {
background: #444;
-webkit-transform: rotate(270deg);
-ms-transform: rotate(270deg);
}
#stepEleven {
background: #333;
-webkit-transform: rotate(300deg);
-ms-transform: rotate(300deg);
}
#stepTvelve {
background: #222;
-webkit-transform: rotate(330deg);
-ms-transform: rotate(330deg);
}
@-webkit-keyframes spinner_anim {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@-ms-keyframes spinner_anim {
0% {
-ms-transform: rotate(0deg);
}
100% {
-ms-transform: rotate(360deg);
}
}
/*global angular*/
angular.module("loaderDirectiveSample").directive('spinnerLoader', function() {
'use strict';
return {
restrict: 'EA',
scope: {
slVisible: '=',
slSize: '='
},
template:
'<div class="spinnerLoad">' +
'<div id="stepOne" class="bar"></div>' +
'<div id="stepTwo" class="bar"></div>' +
'<div id="stepThree" class="bar"></div>' +
'<div id="stepFour" class="bar"></div>' +
'<div id="stepFive" class="bar"></div>' +
'<div id="stepSix" class="bar"></div>' +
'<div id="stepSeven" class="bar"></div>' +
'<div id="stepEight" class="bar"></div>' +
'<div id="stepNine" class="bar"></div>' +
'<div id="stepTen" class="bar"></div>' +
'<div id="stepEleven" class="bar"></div>' +
'<div id="stepTvelve" class="bar"></div>' +
'</div>',
link: function (scope, element, attrs) {
var parent = element[0].parentNode;
/* Will handle visibility changes */
scope.$watch(attrs.slVisible, function () {
//element[0].style.position = 'fixed';
element[0].style.marginTop = (parent.offsetHeight / 4.5) + 'px';
element[0].style.marginLeft = (parent.offsetWidth / 2.3) + 'px';
element.css('display', scope.slVisible ? 'block' : 'none');
});
/* Will handle the Size */
scope.$watch(attrs.slSize, function () {
if (attrs.slSize) {
element[0].className = attrs.slSize.toLowerCase() + 'Size';
}
});
}
};
});