Skip to content

Commit 4a10c53

Browse files
committed
Resolved scroll-progress.js issues
1 parent 7800ed7 commit 4a10c53

1 file changed

Lines changed: 17 additions & 11 deletions

File tree

src/js/scroll-progress.js

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,29 @@
22
const progressBar = document.getElementById("scrollProgressBar");
33
if (!progressBar) return;
44

5-
const updateProgress = () => {
6-
const scrollTop = window.scrollY;
7-
const scrollHeight =
8-
document.documentElement.scrollHeight - window.innerHeight;
9-
10-
const progress =
11-
scrollHeight > 0 ? (scrollTop / scrollHeight) * 100 : 0;
5+
let ticking = false;
126

7+
const updateProgress = () => {
8+
const scrollTop = globalThis.scrollY;
9+
const scrollHeight = document.documentElement.scrollHeight - globalThis.innerHeight;
10+
const progress = scrollHeight > 0 ? (scrollTop / scrollHeight) * 100 : 0;
1311
progressBar.style.width = `${progress}%`;
12+
ticking = false;
13+
};
14+
15+
const onScroll = () => {
16+
if (!ticking) {
17+
requestAnimationFrame(updateProgress);
18+
ticking = true;
19+
}
1420
};
1521

16-
window.addEventListener("scroll", updateProgress, { passive: true });
17-
window.addEventListener("resize", updateProgress);
22+
globalThis.addEventListener("scroll", onScroll, { passive: true });
23+
globalThis.addEventListener("resize", onScroll);
1824

1925
if ("ResizeObserver" in window) {
20-
new ResizeObserver(updateProgress).observe(document.body);
26+
new ResizeObserver(onScroll).observe(document.body);
2127
}
2228

2329
updateProgress();
24-
})();
30+
})();

0 commit comments

Comments
 (0)