feat: auto-snap to next section when hero scroll reaches 100%
This commit is contained in:
@@ -38,6 +38,7 @@ export default function CloudRevealSection() {
|
||||
const currentFrameRef = useRef(0)
|
||||
const [loaded, setLoaded] = useState(false)
|
||||
const [loadProgress, setLoadProgress] = useState(0)
|
||||
const hasSnapped = useRef(false)
|
||||
|
||||
const { scrollYProgress } = useScroll({
|
||||
target: sectionRef,
|
||||
@@ -102,11 +103,26 @@ 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' })
|
||||
}
|
||||
}
|
||||
// Geri scroll yapılırsa snap'i sıfırla
|
||||
if (progress < 0.9) {
|
||||
hasSnapped.current = false
|
||||
}
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user