Intro.

DEVOCEAN 영, 오픈랩의 프로젝트 아카이브

이번 프로젝트는 SK 그룹 개발자 커뮤니티인 DEVOCEAN의 영(Young), 오픈랩에서 진행된 다양한 프로젝트들을 기록하고 소개하는 웹사이트를 만드는 것이 목적이었습니다. 단순한 프로젝트 리스트를 나열하는 것이 아니라, 브랜드의 철학과 생명력을 전하고자 했습니다.

왜 애니메이션이 필요했을까?

초기 디자인은 정적인 텍스트와 이미지 중심이었습니다. 하지만 스크롤해도 페이지가 너무 조용했고, 사용자는 페이지에 이야기 흐름이나 감정선 없이 정보를 '읽기만' 하게 되었죠.
이 프로젝트는 단순한 정보전달이 아닌,
“DEVOCEAN 영, 오픈랩은 어떤 분위기의 조직이고,
어떤 프로젝트들이 있었는지를 감각적으로 느끼게 해야 한다.”
는 목적이 있었습니다.
그래서 사용자가 페이지를 스크롤할 때마다 화면이 반응하도록 만들자는 결론에 도달했습니다.

왜 Framer Motion을 선택했을까?

React 생태계 안에서 애니메이션을 적용할 수 있는 도구는 많습니다.
CSS 애니메이션, AOS (Animate On Scroll), GSAP, 그리고 Framer Motion까지.
이 중 Framer Motion을 선택한 이유는 다음과 같습니다:
  • React 친화적: 컴포넌트 내부에서 상태 기반으로 선언적으로 애니메이션을 구성할 수 있음
  • 직관적인 API: initial, animate, whileInView 등 이해하기 쉬운 키워드
  • 유연한 동작 제어: viewport 옵션으로 스크롤 진입 시 애니메이션 조절 가능
  • 협업 친화성: 선언형 구조로 디자이너/기획자와의 커뮤니케이션이 쉬움

1. SectionOne: 이미지가 스크롤에 반응하며 등장하는 시작점

정적인 페이지에 첫 인상을 심다

DEVOCEAN 영 아카이브의 첫 화면은 브랜드 아이덴티티를 시각적으로 강하게 드러내야 했습니다.
그저 로고와 설명 문장을 나열하면 의미 전달은 되지만, "브랜드에 생명이 있다"는 인상은 부족하죠.
그래서 저희는 "처음 페이지에 진입했을 때, 시선을 끌 수 있는 방식"을 고민했습니다.
첫번째 섹션 애니메이션

Devocean 로고 이후 등장하는 키 비주얼 3종

  • devocean_developers.png
  • devocean_devotion.png
  • devocean_tech.png
이 3개의 키 비주얼 이미지는 순차적으로 좌우에서 등장하며 페이지의 분위기를 만들어줍니다.
각각의 이미지는 motion.img 컴포넌트로 다음과 같은 애니메이션이 설정되어 있습니다.
<motion.img
  src="..."
  initial={{ opacity: 0, x: ±400 }}
  whileInView={{ opacity: 1, x: 0 }}
  transition={{ duration: 1.1~1.4, ease: 'easeOut' }}
  viewport={{ once: false, amount: 0.1 }}
/>

스크롤 기반 트리거 + 자연스러운 트윈

  • whileInView를 사용해 스크롤 진입 시마다 반복적으로 트리거되도록 설정
  • x: 400 → 0 또는 x: -400 → 0으로 부드러운 슬라이딩
  • ease: "easeOut"으로 출현 시 속도가 자연스럽게 느려짐
  • viewport.amount: 0.1로 10%만 보여도 애니메이션 시작
이러한 조합을 통해 사용자는 스크롤을 내리면서 단계적으로 키비주얼을 접하게 되고,
이는 DEVOCEAN이라는 브랜드에 대한 몰입감을 높이는 효과를 가져옵니다.

디자인/UX 협업 포인트

  • 디자이너와 함께 등장 방향과 타이밍을 맞추는 것이 중요했습니다.
    x 방향 값과 duration, delay 등을 미세 조정하며 시안과 일치시킴

2. SectionTwo: 가치관을 이미지와 함께 살아 움직이게 만들기

DEVOCEAN이 믿는 ‘문화·기술·사람’의 가치, 어떻게 시각화할까?

DEVOCEAN 영 아카이브의 중간 섹션에서는 단순 정보 나열을 넘어서,
데보션이 중요하게 여기는 가치관(문화, 기술, 사람)을
시각적이고 정서적으로 느낄 수 있는 방식으로 표현하고 싶었습니다.
단순한 카드 UI보다는 화면 속 구성요소들이 살아 움직이면서
사용자에게 데보션의 철학이 생생히 전달된다는 인상을 주고 싶었습니다.
두번째 섹션 애니메이션

세 개의 카드가 한 줄로 움직이며 등장

총 세 개의 가치관 카드는 아래 구조로 렌더링되어 있습니다:
  • 문화, 기술, 사람
각 카드는 motion.div를 사용해 스크롤 진입 시 아래에서 위로, 작아졌다가 커지는 형태로 등장합니다.
(초기 scale이 0.8, y 값은 100에서 시작)
<motion.div
  initial={{ opacity: 0, y: 100, scale: 0.8 }}
  whileInView={{ opacity: 1, y: 0, scale: 1 }}
  transition={{
    duration: 0.8,
    ease: [0.68, -0.55, 0.265, 1.55],
    delay: 0.1 ~ 0.5,
  }}
  viewport={{ once: false, amount: 0.3 }}
>

핵심 포인트

  • y 위치를 조정하며 아래에서 등장하는 자연스러운 흐름 구현
  • scale 속성을 활용해 크기 변화가 있는 등장 방식으로 몰입감 강화
  • 각 요소마다 delay를 다르게 설정해 순차적으로 등장
  • 특정 스크롤 비율(30%) 진입 시 시작되도록 설정

협업 및 연출 포인트

  • 디자이너와 함께 카드별 등장 순서와 타이밍을 구체적으로 설정
  • 세 개가 한꺼번에 등장하면 부담스러울 수 있어 delay를 분산 배치
  • 개발자에게 친숙한 ease 값을 직접 설정하며 튀지 않고 부드럽게 조정

3. SectionThree: 입체적으로 배치된 파트너 카드에 생동감을 더하다

정적 그리드 대신 관계와 네트워크가 느껴지는 파트너 소개

파트너 소개 영역에서는 단순한 카드 나열보다는
서로 연결된 듯한 유기적인 배치를 통해
DEVOCEAN이 다양한 커뮤니티와 함께하고 있다는 인상을 주고자 했습니다.
이를 위해 상하좌우로 교차된 레이아웃을 구성하고
각 파트너 카드를 Framer Motion으로 등장시키며
"살아 있는 네트워크"처럼 보이게 설계했습니다.
세번째 섹션 애니메이션

구성: 교차 배치 + 상하 이동 애니메이션

파트너 카드 4개는 absolute 속성을 활용해 아래와 같이 배치했습니다:
  • 왼쪽 상단, 왼쪽 하단, 오른쪽 상단, 오른쪽 하단
모션 효과는 y축 방향으로만 변화시켜
단단한 구성 속에 부드러운 움직임을 녹이는 느낌을 만들었습니다.
<motion.div
  className="absolute left-0 top-0"
  initial={{ opacity: 0, y: 50 }}
  whileInView={{ opacity: 1, y: 0 }}
  transition={{ duration: 0.8, ease: "easeOut" }}
  viewport={{ once: false, amount: 0.2 }}
>
※ 나머지 카드들도 y 방향만 반대로 하거나 delay만 달리 설정하여 동일 구조 유지

핵심 포인트

  • 절대 위치 배치 + 애니메이션 조합으로 정적 그리드의 한계 극복
  • 정방향과 역방향 y 이동 조합으로 위아래 리듬감 형성
  • delay를 카드마다 다르게 설정해 순차적 등장 효과 구현

연출 의도

  • 사용자가 한 번에 보지 않고 각 파트너에 주목할 수 있도록 유도
  • 등장 타이밍을 분산시켜 시선 흐름을 카드 간 이동하게끔 설계

4. ReviewSwiper: 부드러운 자동 스크롤에 사용자 리뷰 녹이기

"저희와 함께한 사람들"의 생생한 이야기를 수면 위로

ReviewSwiper는 DEVOCEAN 영 또는 오픈랩 활동을 마친 분들의 생생한 리뷰를
자동으로 흘러가는 수평 스크롤로 노출하는 섹션입니다.
리뷰는 정적인 텍스트지만, 그 안에 담긴 감정과 진심은
움직임을 통해 더 풍부하게 전달된다고 생각했습니다.
네번째 섹션 애니메이션

구성: react-slick + 무한 루프 + linear 속도

slick-carousel 기반의 react-slick을 사용하여 슬라이더를 구성하고,
CSS 커스터마이징을 통해 끊김 없는 자동 스크롤을 구현했습니다.
const settings = {
  infinite: true,
  slidesToShow: 4,
  slidesToScroll: 1,
  autoplay: true,
  speed: 10000,
  autoplaySpeed: 0,
  cssEase: 'linear',
  arrows: false,
};
핵심은 speed: 10000autoplaySpeed: 0, cssEase: 'linear'.
이를 통해 슬라이더는 초당 일정 속도로 쉼 없이 흐르게 됩니다.

핵심 포인트

  • linear easing으로 부드러운 흐름 유지
  • autoplaySpeed를 0으로 설정하여 무정지 슬라이드 구현
  • .custom-gradient-overlay를 사용해 양 끝 페이드 효과도 추가
.custom-gradient-overlay {
  position: absolute;
  left: 0;
  right: 0;
  height: 100%;
  background: linear-gradient(
    to right,
    rgba(13, 24, 43, 1) 0%,
    rgba(13, 24, 43, 0) 20%,
    rgba(13, 24, 43, 0) 80%,
    rgba(13, 24, 43, 1) 100%
  );
  z-index: 10;
}

연출 의도

  • 마치 사용자들의 목소리가 물결처럼 흘러가는 듯한 인상 전달
  • 한 명 한 명의 리뷰에 자연스럽게 눈이 머무르도록 유도
  • 시선을 양 끝으로 흘려보내며 리듬감 있는 마무리 형성

적용 결과

  • 사용자는 클릭 없이도 다양한 리뷰를 수동적으로 경험 가능
  • 인터랙션 없이도 사용자 존재감과 신뢰도를 자연스럽게 전달

마무리: 작지만 유의미한 전환의 힘

처음 DEVOCEAN 오픈랩 아카이브 페이지를 기획할 때,
저희는 단순한 정보 나열형 페이지를 만들고 싶지 않았습니다.
그래서 Framer Motion을 통해 작은 전환의 감각을 더하는 것부터 시작했습니다.

전환이 주는 감각적 설득력

  • 페이지를 스크롤할수록 요소들이 자연스럽게 등장하며
    사용자는 지금 뭔가가 펼쳐지고 있다는 몰입을 경험합니다.
  • 리뷰가 스르륵 지나가고, 파트너 로고가 차례로 나타나는 흐름 속에서
    저희는 텍스트만으론 담기 힘든 감정을 함께 전달할 수 있었습니다.

기술보다 중요한 건 의도를 연결하는 감각

애니메이션은 단지 꾸밈이 아닙니다. 그보다는 사용자의 시선을 이끌고, 다음 행동을 암시하며,
페이지 내 의도를 부드럽게 연결하는 도구라고 생각합니다.
그리고 그 연결은 작지만, 사용자 경험 전체에 큰 영향을 줄 수 있습니다.

다음 프로젝트에 참고할 수 있는 포인트

  • 단순한 등장/퇴장도, 위치 변화 + 투명도 조합으로 몰입감 상승
  • 반복되는 구조일수록 지연 시간 차등 적용 으로 생동감 부여
  • 콘텐츠 흐름이 빠를수록 linear easing으로 시선 안정화
  • 애니메이션은 항상 스크롤 위치와 연동 해서 자연스럽게 제어

마무리하며

이번 DEVOCEAN 영, 오픈랩 아카이브 프로젝트를 통해
저희는 기술보다 중요한 것이 사용자와 콘텐츠의 자연스러운 연결임을 다시 한 번 체감했습니다.
그리고 그 연결을 만드는 가장 부드럽고 확실한 도구 중 하나가 바로 애니메이션임을 깨달았습니다.