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