parent
4af03a9e71
commit
fc4a4c1a4e
@ -1,51 +0,0 @@ |
|||||||
function qs(selector: any, all = false) { |
|
||||||
return all |
|
||||||
? document.querySelectorAll(selector) |
|
||||||
: document.querySelector(selector); |
|
||||||
} |
|
||||||
|
|
||||||
const sections = qs(".section", true); |
|
||||||
const timeline = qs(".timeline"); |
|
||||||
const line = qs(".line"); |
|
||||||
line.style.bottom = `calc(100% - 20px)`; |
|
||||||
let prevScrollY = window.scrollY; |
|
||||||
let up, down; |
|
||||||
let full = false; |
|
||||||
let set = 0; |
|
||||||
const targetY = window.innerHeight * 0.8; |
|
||||||
|
|
||||||
function scrollHandler(e?: any) { |
|
||||||
const { scrollY } = window; |
|
||||||
up = scrollY < prevScrollY; |
|
||||||
down = !up; |
|
||||||
const timelineRect = timeline.getBoundingClientRect(); |
|
||||||
const lineRect = line.getBoundingClientRect(); // const lineHeight = lineRect.bottom - lineRect.top;
|
|
||||||
|
|
||||||
const dist = targetY - timelineRect.top; |
|
||||||
console.log(dist); |
|
||||||
|
|
||||||
if (down && !full) { |
|
||||||
set = Math.max(set, dist); |
|
||||||
line.style.bottom = `calc(100% - ${set}px)`; |
|
||||||
} |
|
||||||
|
|
||||||
if (dist > timeline.offsetHeight + 50 && !full) { |
|
||||||
full = true; |
|
||||||
line.style.bottom = `-50px`; |
|
||||||
} |
|
||||||
|
|
||||||
sections.forEach((item: any) => { |
|
||||||
// console.log(item);
|
|
||||||
const rect = item.getBoundingClientRect(); // console.log(rect);
|
|
||||||
|
|
||||||
if (rect.top + item.offsetHeight / 5 < targetY) { |
|
||||||
item.classList.add("show-me"); |
|
||||||
} |
|
||||||
}); // console.log(up, down);
|
|
||||||
|
|
||||||
prevScrollY = window.scrollY; |
|
||||||
} |
|
||||||
|
|
||||||
scrollHandler(); |
|
||||||
line.style.display = "block"; |
|
||||||
window.addEventListener("scroll", scrollHandler); |
|
Loading…
Reference in new issue