Next.js 14버전으로 개발중인 포트폴리오 사이트에 소개란을 만들 때 유용한 UI들 중에서
깃허브 공식 홈페이지에서 사용된 Timeline 디자인이 꽤나 마음에 들었다.

실제로 Timeline 디자인을 구현할 수도 있었지만 아직까지는 그정도 실력이 되지 않기 때문에 현재 존재하는 패키지 중에서 React Vertical Timeline를 사용하기로 했다.
그러나 해당 패키지의 경우
document가 깔끔하게 정리되어 있지 않으며, 한글로 정리되어 있는 글도 제대로 없어서
스스로 블로그에 정리해보기로 마음 먹었다!!
React Vertical Timeline Document -> 해당 글은 위 공식문서를 기반으로 작성하였다
가장 먼저 document를 보면서 확인했던 것은 다른 패키지들과의 의존성 문제가 없는지였다.
다행히도 큰 문제점은 발견되지 않았다.
그다음으로 확인하고 싶었던 점은 Demo였다.
위 공식문서를 통해 확인할 수 있었던 Demo는 크게 3가지로 나눌 수 있었다



이외에도 스크롤이나 버튼 클릭을 통해 데이터 로드를 실행하여 더 많은 Timeline을 불러오거나 라인의 색, 형태를 바꾸는 등의 작업이 가능했기에 사용하기에 편리하다고 생각했다.
사용법을 알아보기 위해 코드를 보고 싶었으나
이 공식 문서가 불친절하다고 느꼈던 이유 중 하나가 Demo 별로 코드를 보여주는 것이 아닌
오직 하나의 Demo에 대해서만 코드를 제공해줬다.
따라서 위 커스텀 컴퍼넌트를 잘 다루기 위해선 해당 패키지가 제공하는 props를 꿰뚫고 있어야 한다.
근데 공식 문서를 보면 알겠지만....
양이 생각보다 방대하다...
그래도 일단 열심히 정리해보자!
그전에 컴퍼넌트의 구성 형식에 대해서 알아보자
컴퍼넌트는 크게 2가지로 나뉜다
import {VerticalTimeline, VerticalTimelineElement} from 'react-vertical-timeline-component';
import 'react-vertical-timeline-component/style.min.css';
<VerticalTimeline>
<VerticalTimelineElement
className="vertical-timeline-element--work"
date="2011 - present"
iconStyle={{ background: 'rgb(33, 150, 243)', color: '#fff' }}
>
<h3 className="vertical-timeline-element-title">Creative Director</h3>
<h4 className="vertical-timeline-element-subtitle">Miami, FL</h4>
<p>
Creative Direction, User Experience, Visual Design, Project Management,
Team Leading
</p>
</VerticalTimelineElement>
</VerticalTimeline>
반응형 세로 타임라인의 구성 요소를 사용자의 마음대로 커스터마이징할 수 있다.
지금부턴 어떤 요소들을 커스터마이징할 수 있는지 확인해보자.
animate
className
루트 div 요소에 추가 클래스 이름을 추가함
layout
'1-column-left' 또는 '1-column-right' 또는 '2-columns' 중에서 선택함
기본값은 '2-columns'
lineColor
타임라인의 색상을 선택함
기본값은 'white'
className
루트 div 요소에 추가 클래스 이름을 추가함
contentArrowStyle
콘텐츠 화살표 div 요소에 대한 추가 스타일을 추가함
contentStyle
콘텐츠 div요소에 추가 스타일을 추가함
date
요소의 날짜임
dateClassName
요소의 날짜에 추가 클래스 이름을 추가함
icon
요소의 아이콘임
iconClassName
요소의 아이콘에 추가 클래스 이름을 추가함
iconOnClick
요소의 아이콘의 onClick 핸들러임
iconStyle
요소의 아이콘 스타일임
position
요소의 위치 (왼쪽 또는 오른쪽)
style
루트 div 요소에 추가 스타일을 추가함
textClassName
텍스트 컨테이너에 추가 클래스 이름을 추가함