Dseok의 실전 예제로 웹개발 한방에 끝내기

웹개발, 혼자 하려니 막막하고 힘드시죠? 저 또한 그렇습니다. 힘든 웹개발... 실전 예제를 통해 함께 공부해요!!!!😁📕

React.js

[Dseok의 코딩스터디] React.js 스크롤을 활용한 인터랙티브 페이지 | 사용자 경험을 극대화하는 방법

Dseok 2025. 3. 9. 09:00
반응형
SMALL

📌 "단순한 스크롤이 아니라, 경험을 디자인하는 것!"

웹사이트를 방문했을 때 첫인상이 가장 중요한 순간입니다.
하지만, 그냥 단순히 텍스트와 이미지가 나열된 사이트와,
스크롤할 때마다 콘텐츠가 살아 움직이는 사이트 중 어느 쪽이 더 기억에 남을까요?

사용자의 시선을 사로잡고, 브랜드를 각인시키는 비밀인터랙티브한 스크롤 애니메이션에 있습니다.

오늘은 스크롤을 활용한 인터랙티브 웹사이트를 만드는 방법과, 실제로 구현할 수 있는 다양한 아이디어를 소개해드리겠습니다. 🎨

jQuery코드

🎬 스크롤 인터랙션이란?

**스크롤 인터랙션(Scroll Interaction)**은 사용자가 페이지를 아래로 내릴 때 콘텐츠가 자연스럽게 등장하거나, 움직이거나, 변형되는 효과를 의미합니다.

왜 중요한가요?

  1. 사용자의 몰입도를 증가시켜 브랜드와의 상호작용을 유도합니다.
  2. 단순한 정보 전달이 아니라, 스토리텔링이 가능해집니다.
  3. 지루함을 없애고, 자연스럽게 다음 콘텐츠를 탐색하도록 유도합니다.

어디에 사용할 수 있나요?

  • 제품 홍보 페이지 (애플, 테슬라처럼)
  • 랜딩 페이지 (스타트업, 포트폴리오)
  • 인터랙티브 스토리텔링 사이트 (뉴스, 캠페인 사이트)

이제 직접 구현할 수 있는 스크롤 인터랙션 예제를 살펴볼까요? 😍

 

🔥 스크롤 인터랙티브 효과 5가지 구현 예제

1️⃣ 스크롤할 때 요소가 부드럽게 나타나는 효과 (Fade In)

사용 라이브러리: Framer Motion

import { motion } from "framer-motion";
import { useEffect, useState } from "react";

function ScrollFadeIn({ children }) {
  const [isVisible, setIsVisible] = useState(false);

  useEffect(() => {
    const handleScroll = () => {
      const scrollTop = window.scrollY;
      setIsVisible(scrollTop > 100);
    };
    window.addEventListener("scroll", handleScroll);
    return () => window.removeEventListener("scroll", handleScroll);
  }, []);

  return (
    <motion.div
      initial={{ opacity: 0 }}
      animate={{ opacity: isVisible ? 1 : 0 }}
      transition={{ duration: 0.8 }}
    >
      {children}
    </motion.div>
  );
}

export default ScrollFadeIn;

설명: 사용자가 100px 이상 스크롤하면 콘텐츠가 부드럽게 나타남.

 

2️⃣ 스크롤할 때 배경이 바뀌는 효과 (Scroll Triggered Background)

사용 라이브러리: GSAP + ScrollTrigger

import { useEffect, useRef } from "react";
import gsap from "gsap";
import ScrollTrigger from "gsap/ScrollTrigger";

function ScrollBackground() {
  const ref = useRef(null);

  useEffect(() => {
    gsap.registerPlugin(ScrollTrigger);
    gsap.to(ref.current, {
      backgroundColor: "#ff0000",
      duration: 1,
      scrollTrigger: {
        trigger: ref.current,
        start: "top center",
        end: "bottom center",
        scrub: true,
      },
    });
  }, []);

  return <div ref={ref} style={{ height: "100vh", backgroundColor: "#000" }}></div>;
}

export default ScrollBackground;

설명: 특정 위치에서 배경 색상이 변하는 효과.

 

3️⃣ 스크롤을 내릴 때 이미지가 확대되는 효과 (Parallax Zoom)

사용 라이브러리: GSAP + ScrollTrigger

import { useRef, useEffect } from "react";
import gsap from "gsap";
import ScrollTrigger from "gsap/ScrollTrigger";

function ScrollZoomImage() {
  const imageRef = useRef(null);

  useEffect(() => {
    gsap.registerPlugin(ScrollTrigger);
    gsap.to(imageRef.current, {
      scale: 1.5,
      duration: 2,
      scrollTrigger: {
        trigger: imageRef.current,
        start: "top bottom",
        end: "top center",
        scrub: true,
      },
    });
  }, []);

  return <img ref={imageRef} src="/example.jpg" alt="Zoom Image" style={{ width: "100%" }} />;
}

export default ScrollZoomImage;

설명: 스크롤을 내릴수록 이미지가 확대되며 시각적 집중도를 높임.

 

4️⃣ 스크롤을 내릴 때 텍스트가 타이핑되는 효과 (Typing Effect)

사용 라이브러리: Framer Motion

import { motion } from "framer-motion";

function TypingText({ text }) {
  return (
    <motion.p initial={{ opacity: 0 }} animate={{ opacity: 1 }} transition={{ duration: 1 }}>
      {text}
    </motion.p>
  );
}

export default TypingText;

설명: 스크롤을 내릴 때 텍스트가 부드럽게 나타나는 효과.

 

5️⃣ 스크롤할 때 요소가 회전하는 효과 (Scroll Rotation)

사용 라이브러리: GSAP

import { useEffect, useRef } from "react";
import gsap from "gsap";

function ScrollRotate() {
  const ref = useRef(null);

  useEffect(() => {
    gsap.to(ref.current, {
      rotation: 360,
      duration: 2,
      scrollTrigger: {
        trigger: ref.current,
        start: "top bottom",
        end: "top center",
        scrub: true,
      },
    });
  }, []);

  return <div ref={ref} style={{ width: "100px", height: "100px", background: "blue" }}></div>;
}

export default ScrollRotate;

설명: 사용자가 스크롤할 때 요소가 360도 회전하는 효과.

 

🎯 결론: 인터랙티브한 웹사이트로 사용자 경험을 업그레이드하세요!

지금까지 스크롤 인터랙션을 활용한 다양한 애니메이션 효과를 소개해드렸습니다. 🏆

어떤 프로젝트에서 활용하면 좋을까요?

  • 브랜드 랜딩 페이지 🏢
  • 제품 홍보 페이지 📱
  • 인터랙티브 스토리텔링 🎭
  • 개발자 포트폴리오 🚀

단순한 웹사이트가 아닌, 사용자가 기억하는 웹사이트를 만드세요! 🎨✨

🚀 당신의 프로젝트에 맞는 스크롤 인터랙션을 적용해보세요! 😊

반응형
LIST