forked from ssbostan/devops
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain.js
More file actions
128 lines (113 loc) · 3.65 KB
/
main.js
File metadata and controls
128 lines (113 loc) · 3.65 KB
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
121
122
123
124
125
126
127
128
//========= preloader
const preloader = document.getElementById("preloader");
window.addEventListener("DOMContentLoaded", () => {
preloader.style.display = "none";
});
//========= change height of the navbar on scroll
const navBar = document.querySelector("#navbar");
const scrollToTopElem = document.getElementById("scrollToTop");
document.addEventListener("scroll", (e) => {
if (window.scrollY > 100) {
navBar.classList.remove("h-20");
navBar.classList.add("h-16");
// handle show scrolltop
scrollToTopElem.classList.remove("hidden");
scrollToTopElem.classList.add("flex");
} else {
navBar.classList.add("h-20");
navBar.classList.remove("h-16");
// handle remove scrolltop
scrollToTopElem.classList.remove("flex");
scrollToTopElem.classList.add("hidden");
}
});
//========= click to scoll to top
scrollToTop.addEventListener("click", () => {
window.scrollTo(0, 0);
});
//========= timer
const day = document.getElementById("day");
const hour = document.getElementById("hour");
const minute = document.getElementById("minute");
const second = document.getElementById("second");
function countdownTimer() {
const difference = +new Date("2024-02-02 12:00") - +new Date();
let remaining = {
days: 0,
hours: 0,
minutes: 0,
seconds: 0,
};
if (difference > 0) {
const parts = {
days: Math.floor(difference / (1000 * 60 * 60 * 24)),
hours: Math.floor((difference / (1000 * 60 * 60)) % 24),
minutes: Math.floor((difference / 1000 / 60) % 60),
seconds: Math.floor((difference / 1000) % 60),
};
day.innerHTML = parts.days;
hour.innerHTML = parts.hours;
minute.innerHTML = parts.minutes;
second.innerHTML = parts.seconds;
}
}
countdownTimer();
setInterval(countdownTimer, 1000);
//========= initial AOS (for animate on scroll)
AOS.init();
//========= handle tabs
const tabs = document.querySelectorAll(".tabs");
const tabContents = document.querySelectorAll(".tab-content");
tabs.forEach((tab, i) => {
tab.addEventListener("click", (e) => {
tabs.forEach((tab) => {
tab.classList.remove("active");
});
tabContents.forEach((tabContent) => {
tabContent.classList.remove("active");
});
tab.classList.add("active");
tabContents[i].classList.add("active");
});
});
const counterSection = document.getElementById("counterSection");
const speakers = document.getElementById("speakers");
const providers = document.getElementById("providers");
const workshopCapacity = document.getElementById("workshopCapacity");
const conferenceCapacity = document.getElementById("conferenceCapacity");
const countUp = (target, element) => {
let currentNumber = 0;
const updateCounter = () => {
currentNumber += 1;
element.textContent = currentNumber;
if (currentNumber < target) {
requestAnimationFrame(updateCounter);
} else {
element.textContent = target;
}
};
requestAnimationFrame(updateCounter);
};
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
countUp(speakers.dataset.targetNumber, speakers);
countUp(providers.dataset.targetNumber, providers);
countUp(workshopCapacity.dataset.targetNumber, workshopCapacity);
countUp(conferenceCapacity.dataset.targetNumber, conferenceCapacity);
observer.unobserve(entry.target);
}
});
},
{
threshold: 0.1,
}
);
observer.observe(counterSection);
const hamMenu = document.getElementById("hamMenu");
const aside = document.getElementById("aside");
hamMenu.addEventListener("click", () => {
hamMenu.classList.toggle("active");
aside.classList.toggle("active");
});