/
parallax.js
51 lines (49 loc) · 2.52 KB
/
parallax.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
/* Kirill Rezanov */
class Parallax {
constructor(element, speed, direction) {
this.parallax(element, speed, direction);
}
parallax(element, speed, direction) {
if(direction === false) {
if(Object.prototype.toString.call(element) != "[object NodeList]" && Object.prototype.toString.call(element) != "[object Array]") {
window.addEventListener("scroll", function() {
var top = window.pageYOffset;
element.style.transform = "translateY(-"+top/speed+"px)";
});
} else {
window.addEventListener("scroll", function() {
for(let i = 0; i < element.length; i++) {
var top = window.pageYOffset;
if(top >= (element[i].getBoundingClientRect().top + document.body.scrollTop)) {
element[i].style.transform = "translateY(-"+(top - element[i].getBoundingClientRect().top + document.body.scrollTop)/speed+"px)";
} else if(top >= (element[i].getBoundingClientRect().bottom - document.body.scrollTop)) {
window.addEventListener("scroll", function() {
return;
});
}
}
});
}
} else {
if(Object.prototype.toString.call(element) != "[object NodeList]" && Object.prototype.toString.call(element) != "[object Array]") {
window.addEventListener("scroll", function() {
var top = window.pageYOffset;
element.style.transform = "translateY("+top/speed+"px)";
});
} else {
window.addEventListener("scroll", function() {
for(let i = 0; i < element.length; i++) {
var top = window.pageYOffset;
if(top >= (element[i].getBoundingClientRect().top + document.body.scrollTop)) {
element[i].style.transform = "translateY("+(top - element[i].getBoundingClientRect().top + document.body.scrollTop)/speed+"px)";
} else if(top >= (element[i].getBoundingClientRect().bottom - document.body.scrollTop)) {
window.addEventListener("scroll", function() {
return;
});
}
}
});
}
}
}
}