34 lines
900 B
JavaScript
34 lines
900 B
JavaScript
AOS.init();
|
|
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const rollingNumbers = document.querySelectorAll(".rolling-number");
|
|
|
|
const observer = new IntersectionObserver((entries) => {
|
|
entries.forEach((entry) => {
|
|
if (entry.isIntersecting) {
|
|
const element = entry.target;
|
|
const target = parseInt(element.getAttribute("data-target"));
|
|
let current = 0;
|
|
const increment = target / 120;
|
|
|
|
const updateNumber = () => {
|
|
current += increment;
|
|
if (current < target) {
|
|
element.textContent = Math.floor(current);
|
|
requestAnimationFrame(updateNumber);
|
|
} else {
|
|
element.textContent = target;
|
|
}
|
|
};
|
|
|
|
updateNumber();
|
|
observer.unobserve(element);
|
|
}
|
|
});
|
|
});
|
|
|
|
rollingNumbers.forEach((number) => {
|
|
observer.observe(number);
|
|
});
|
|
});
|