feat: lock scroll at hero 100% — prevent scrolling past hero

This commit is contained in:
2026-07-30 13:10:20 +03:00
parent 24bbac5d65
commit b02bbba47c
+17 -12
View File
@@ -103,27 +103,32 @@ export default function CloudRevealSection() {
useMotionValueEvent(scrollYProgress, 'change', (progress) => {
if (!loaded) return
// Frame güncelle
const frameIndex = Math.min(Math.floor(progress * (TOTAL_FRAMES - 1)), TOTAL_FRAMES - 1)
if (frameIndex !== currentFrameRef.current) {
currentFrameRef.current = frameIndex
drawFrame(frameIndex)
}
})
// %100'de bir sonraki bölüme snap et
if (progress >= 0.99 && !hasSnapped.current) {
hasSnapped.current = true
const next = document.getElementById('proje')
if (next) {
next.scrollIntoView({ behavior: 'smooth' })
// %100'de aşağı scroll'u kilitle
useEffect(() => {
const onWheel = (e: WheelEvent) => {
if (scrollYProgress.get() >= 0.99 && e.deltaY > 0) {
e.preventDefault()
}
}
// Geri scroll yapılırsa snap'i sıfırla
if (progress < 0.9) {
hasSnapped.current = false
const onTouchMove = (e: TouchEvent) => {
if (scrollYProgress.get() >= 0.99) {
e.preventDefault()
}
}
})
window.addEventListener('wheel', onWheel, { passive: false })
window.addEventListener('touchmove', onTouchMove, { passive: false })
return () => {
window.removeEventListener('wheel', onWheel)
window.removeEventListener('touchmove', onTouchMove)
}
}, [scrollYProgress])
useEffect(() => {
const canvas = canvasRef.current