/
angularparallax.js
51 lines (42 loc) · 1.22 KB
/
angularparallax.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
angular.module('parallax', []).directive('angParallax', [
'$window', function ($window) {
return {
restrict: 'A',
scope: {
pCss: '@',
pInitVal: '@',
pRatio: '@'
},
link: function(iScope, iElem, iAttr) {
var cssKey,
cssValue,
isSpecialVal,
pCssVal,
pOffset,
pRatio,
pInitVal,
cssValArray;
pCssVal = iScope.pCss ? iScope.pCss : 'top';
cssValArray = pCssVal.split(':');
cssKey = cssValArray[0];
cssValue = cssValArray[1];
isSpecialVal = cssValue ? true : false;
if (!cssValue) cssValue = cssKey;
pRatio = iScope.pRatio ? +iScope.pRatio : 1.1;
pInitVal = iScope.pInitVal ? +iScope.pInitVal : 0;
iElem.css(cssKey, pInitVal + 'px');
function _onScroll() {
var resultVal;
var calcVal = $window.pageYOffset * pRatio + pInitVal;
if (isSpecialVal) {
resultVal = '' + cssValue + '(' + calcVal + 'px)';
} else {
resultVal = calcVal + 'px';
}
iElem.css(cssKey, resultVal);
};
$window.addEventListener('scroll', _onScroll);
}
};
}
]);