Awwwards 수상 수준 인터랙티브 랜딩 페이지
작성일: 2026-03-07
대상: index.html (현재 1319줄)
기술 제약: Vanilla JS, No build tools, No Service Worker, GitHub Pages
design-system.css (1701줄), animations.js (507줄), app.js (300줄), scroll-effects.js전체 화면 로딩 → 로고/텍스트 reveal → 메인 콘텐츠 등장
- CSS counter (0→100%) 또는 asset 로딩 추적
- 완료 시 clipPath circle → full reveal 트랜지션
- 3초 내 완료 보장 (fallback: 강제 dismiss)
현재: shimmer 텍스트 단순 등장
개선:
- 글자 단위 분할 → stagger 등장 (each 0.03s delay)
- Web Animations API (이미 animations.js에 있음)
- 스크롤 시 글자 단위 parallax 분산
- 배경 orb → Canvas 2D 파티클로 교체 (성능 + 인터랙티브)
Hero 섹션 배경:
- Canvas 2D 파티클 시스템 (100~200개)
- 마우스/터치 위치에 반응 (인력/척력)
- 색상: design-system.css --forest, --gold 토큰 사용
- requestAnimationFrame 기반, 뷰포트 밖 정지
현재: 없음 (모바일 네비게이션 부재)
구현:
- 햄버거 → X 모프 애니메이션
- 전체화면 오버레이 (backdrop-filter: blur)
- 메뉴 항목 stagger reveal (위→아래)
- 각 항목 hover → 배경 이미지/색상 변화
현재: magneticButton() 존재하지만 미적용
개선:
- Hero CTA에 적용
- 호버 시 버튼이 커서 방향으로 끌려감 (15px 범위)
- 클릭 시 ripple + scale 피드백
- 글로우 효과 (box-shadow pulse)
각 섹션 진입 시:
- IntersectionObserver (threshold 0.2)
- 자식 요소들 순차 등장 (stagger 0.08s)
- translateY(40px) + opacity 0 → 0 + 1
- 한 번만 실행 (once: true)
현재: tiltCard() 존재
개선:
- 5개 bento 카드에 3D tilt 적용
- perspective: 1000px, rotateX/Y ±15deg
- 호버 시 내부 요소 translateZ 분리 (다층 효과)
- 그림자 동적 이동 (tilt 방향 반대)
- 모바일: tilt 비활성, 탭 시 scale 효과만
현재: 정적 SVG 삼각형
개선:
- stroke-dasharray + dashoffset 애니메이션
- 스크롤 진입 시 삼각형 한 획씩 그려짐
- 각 꼭짓점 도달 시 라벨 fade-in
- 완성 후 fill opacity 서서히 채움
현재: 정적 표시
개선:
- 5각형 각 꼭짓점 클릭/호버 가능
- 호버 시 해당 노드 확대 + 정보 tooltip
- 연결선 pulse 애니메이션
- Center(Parksy) → 나머지 4개 연결선 순차 등장
숫자 표시 영역 (레포 수, 도구 수 등):
- 스크롤 진입 시 0 → 목표값 카운트업
- duration 2s, easeOutExpo
- 천 단위 콤마 자동 삽입
현재: 카드 목록만
개선:
- 호버 시 카드 확대 (scale 1.05) + 프리뷰 텍스트 슬라이드
- 카드 간 hover 이동 시 배경색 부드럽게 전환
- 클릭 시 카드 → 전체화면 확장 트랜지션 (FLIP 기법)
현재: 지문 아이콘 + 버튼
개선:
- 지문 SVG path draw 애니메이션 (스크롤 연동)
- 터치/클릭 시 지문 인식 시뮬레이션 (pulse + color shift)
- 성공 연출 후 CTA 활성화
- 모바일: 실제 터치 시 진동 (navigator.vibrate)
- 상단 고정 2px 바
- 스크롤 진행률 표시
- 색상: --gold gradient
- 섹션 경계에서 색상 전환
- CSS scroll-snap-type: y proximity (강제 아닌 유도)
- 섹션 간 부드러운 전환
- 모바일에서는 snap 비활성 (자연 스크롤 유지)
- Canvas 파티클: 뷰포트 밖 정지, 저사양 감지 시 비활성
- 애니메이션: prefers-reduced-motion 존중
- 이미지: loading="lazy"
- 폰트: font-display: swap
- IntersectionObserver 단일 인스턴스로 통합
- 모바일 tilt/parallax 자동 비활성
eae-univ/
├── index.html # 구조만 (CSS/JS 외부화)
├── assets/
│ ├── css/
│ │ ├── design-system.css # 기존 유지
│ │ └── landing.css # (신규) 랜딩 전용 스타일
│ └── js/
│ ├── animations.js # 기존 확장
│ ├── app.js # 기존 유지
│ ├── scroll-effects.js # 기존 확장
│ ├── particles.js # (신규) Canvas 파티클
│ └── preloader.js # (신규) 프리로더
1. inline CSS/JS → 외부 파일 분리 (기반 작업)
2. Preloader + Hero split text (Phase 1 핵심)
3. Canvas 파티클 배경 (Phase 1)
4. Scroll stagger + 3D tilt 적용 (Phase 2)
5. SVG draw 애니메이션 (Phase 2)
6. Gate fingerprint 업그레이드 (Phase 3)
7. Performance 최적화 (Phase 3)
8. 모바일 전용 조정 (전 Phase)
| 사이트 | 참고 요소 |
|---|---|
| awwwards.com 수상작 | 전체 UX 흐름 |
| stripe.com | 그라데이션 + 미니멀 |
| linear.app | 다크 테마 + 애니메이션 |
| vercel.com | 타이포 + 스크롤 |
| apple.com | 제품 스토리텔링 |
이 문서는 구현 시작 시 Phase별로 체크리스트로 전환된다.