작업기간
9월 28일 ~ 10월 29일 (기획 9일, 코딩 24일)
작업인원
사용 기술 및 라이브러리

[JS 없는 슬라이드]
radio input + label 구조로 JS 없이 배너 전환 구현
[책갈피 인디케이터]
clip-path로 책갈피 모양 인디케이터 제작, :checked 상태로 활성화 표시

[JS 없는 탭 전환]
input:checked + label 구조로 JS 없이 탭 클릭 → 콘텐츠 전환 구현
[상태 연동]
형제 선택자(~)로 체크된 input에 따라 메인 이미지·설명·서브 상품까지 동시 전환

[외부 버튼 연동]
라이브러리 기본 화살표 대신 커스텀 버튼에 slickPrev/slickNext 직접 연결
[자동재생 설정]
autoplaySpeed·autoHover 옵션으로 hover 시 일시정지 구현

[UX 이탈 방지]
slice()로 초기 노출을 8개로 제한, 접기 시 fadeOut + scrollTo로 시선을 타이틀로 재고정
[상태 분기]
버튼 텍스트를 상태값으로 활용해 더보기/접기 동작을 단일 핸들러로 처리

[구조 분리]
data-filter 값과 상품 클래스명을 일치시켜 JS 조건문 없이 .filter('.' + filterValue)만으로 카테고리 선별
[Graceful Fallback]
상품 미존재 카테고리 클릭 시 빈 화면 대신 "준비 중" 메시지를 fadeIn으로 대체

[자동 포커스]
4자리 입력 완료 시 다음 칸으로, 백스페이스 시 이전 칸으로 포커스 이동
[양방향 동기화]
전체동의 ↔ 개별 체크박스가 서로 상태를 반영, every()로 전체 체크 여부 판별
작업기간
12월 12일 ~ 1월 27일 (기획 25일, 코딩 21일)
작업인원
사용 기술 및 라이브러리

Slick 반응형 배너
메인 비주얼 배너를 Slick 라이브러리로 구현하였습니다. PC(1070px 이상)에서는 전체 너비 1장 슬라이드로, 모바일/태블릿에서는 centerMode와 centerPadding으로 좌우 슬라이드가 살짝 보이는 스와이프형으로 자동 전환됩니다. responsive 옵션의 breakpoint 분기를 활용해 단일 초기화 코드로 두 가지 레이아웃을 동시에 처리하였습니다.

최신음악 국내/해외 필터
메인 페이지의 최신 음악 섹션에서 탭 클릭 시 전체 / 국내 / 해외 카테고리로 목록을 필터링하도록 구현하였습니다. 각 곡 항목에 data-category 속성을 부여하고, 선택된 탭의 data-target 값과 비교하여 해당 항목만 노출하는 방식으로, HTML 구조 변경 없이 JS만으로 필터 전환이 가능하도록 설계하였습니다.

검색 풀다운 & 최근 검색어
PC에서 검색창 클릭 시 풀다운이 노출되고, 검색 실행 시 최근 검색어 목록 상단에 동적으로 추가됩니다. 최대 10개 초과 시 가장 오래된 항목을 자동 삭제하며, 외부 영역 클릭 시 풀다운이 닫히도록 document 이벤트로 처리하였습니다. 모바일에서는 검색 아이콘 클릭 시 별도 전체화면 검색 페이지로 전환됩니다.

매거진 필터 정렬
매거진 목록 상단의 필터(날짜순 / 좋아요순 / 북마크순) 클릭 시 allData 배열을 sort()로 재정렬한 뒤 renderList()를 다시 호출하도록 구현하였습니다. 정렬 변경 시 표시 상태(displayedCount, currentPage)를 초기화하여 항상 첫 화면부터 새로운 순서로 출력됩니다.

반응형 더보기 ↔ 페이지네이션
매거진 기사 목록을 화면 너비에 따라 PC(1070px 이상)에서는 페이지네이션, 모바일/태블릿에서는 더보기 방식으로 각각 다르게 렌더링하도록 구현하였습니다. renderList() 함수 내에서 window.innerWidth로 분기하며, resize 이벤트에 연결하여 창 크기가 바뀌어도 자동으로 전환됩니다. 더보기 모드에서는 5개씩 추가 노출되고, 전체 노출 시 버튼이 "접기"로 전환됩니다.
작업기간
1월 28일 ~ 3월 5일 (기획 7일, 코딩 28일)
작업인원
사용 기술 및 라이브러리

[시각적 긴장감]
2020년 이전 구간은 10단위로 빠르게 훑고, 이후 1씩 올라오도록 onUpdate 콜백 안에서 분기 처리
[순차 연출]
Timeline으로 이미지 확장 → 연도 등장 → 카운팅 → 설명 텍스트를 하나의 흐름으로 제어

[Hybrid Animation]
Timeline의 onStart 콜백에서 .active 클래스를 추가해 GSAP 타이밍에 맞춰 CSS transition 트리거
[연출 흐름 설계]
4단계 애니메이션을 단일 Timeline으로 묶어 "읽히는 순서"와 "보이는 순서"를 일치시킴

[스크롤 동기화]
ScrollTrigger.create()를 content_item마다 등록, onToggle로 현재 섹션에 맞게 핀 active 상태 자동 갱신
[커스텀 스크롤]
핀 클릭 시 targetST.start 값을 역산해 gsap.to()로 ease 적용된 부드러운 이동 구현

[커스텀 슬라이드]
Slick 없이 GSAP x값 보간으로 슬라이드 이동 구현, 인덱스 순환 처리 포함
[리스트 연동]
리스트 패널에서 항목 클릭 시 해당 인덱스로 직접 이동 후 패널 자동 닫힘

[무한 루프]
동일 요소 3벌 복제 후 scrollWidth / 3 만큼 이동, repeat: -1로 끊김 없는 자동 흐름 구현
[ease: none]
일정한 속도 유지를 위해 ease 없이 linear 이동 적용