-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js
120 lines (105 loc) · 3.38 KB
/
main.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const menuBtn = document.querySelector(".menu-btn");
let openMenu = false;
menuBtn.addEventListener("click", () => {
if (!openMenu) {
menuBtn.classList.add("open");
openMenu = true;
} else {
menuBtn.classList.remove("open");
openMenu = false;
}
});
const navbarNav = document.querySelector(".navbar-nav");
document.querySelector(".menu-btn").onclick = function () {
navbarNav.classList.toggle("active");
};
// Observer
const textTarget = document.querySelectorAll(".text-highlight");
textTarget.forEach((textElement) => {
const observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
textElement.classList.add("animated");
} else {
textElement.classList.remove("animated");
}
});
observer.observe(textElement);
});
const paraTarget = document.querySelectorAll(".para-highlight");
paraTarget.forEach((textElement) => {
const observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
textElement.classList.add("animated");
} else {
textElement.classList.remove("animated");
}
});
observer.observe(textElement);
});
const perTarget = document.querySelectorAll(".skill-per");
perTarget.forEach((textElement) => {
const observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
textElement.classList.add("animated");
} else {
textElement.classList.remove("animated");
}
});
observer.observe(textElement);
});
window.addEventListener("scroll", function () {
var navbar = document.querySelector(".navbar");
navbar.classList.toggle("sticky", window.scrollY > 0);
});
window.addEventListener("DOMContentLoaded", setup);
function setup() {
const options = {
rootMargin: "0px 0px 0px 0px",
};
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
for (
let i = 0;
i < document.querySelectorAll(".progress-val").length;
i++
) {
console.log(
document.querySelectorAll(".progress-val")[i].textContent
);
let circularProgress =
document.querySelectorAll(".circular-progress")[i],
progressValue = document.querySelectorAll(".progress-val")[i];
let progressStartValue = 0,
progressEndValue = `${
document.querySelectorAll(".progress-val")[i].textContent
}`,
speed = 20;
let progress = setInterval(() => {
progressStartValue++;
progressValue.textContent = `${progressStartValue}`;
circularProgress.style.background = `conic-gradient(rgb(80, 80, 80) ${
progressStartValue * 3.6
}deg, #ededed 0deg)`;
if (progressStartValue == progressEndValue) {
clearInterval(progress);
}
}, speed);
}
} else {
for (
let i = 0;
i < document.querySelectorAll(".progress-val").length;
i++
) {
let circularProgress =
document.querySelectorAll(".circular-progress")[i];
circularProgress.style.background = `conic-gradient(rgb(80, 80, 80) ${3.6}deg, #ededed 0deg)`;
}
return;
}
});
}, options);
const para = document.querySelector(".progress-val");
observer.observe(para);
}