프론트엔드회고

여백 임팩트 부족, 파스텔 orb 6 개 + 그레인 텍스처 등 12 레이어 추가 — POP-SPOT v1.9 매거진 풀 리디자인

김동현
··4분 읽기

"여백 많고 임팩트 부족, 적어도 10 가지" 피드백. 파스텔 orb 6 + 그레인 텍스처 + conic ray + dust 파티클 + 좌측 매거진 라벨 + VOL 칩 + ghost 번호 + 따뜻한 다크 톤 등 12 레이어.

"여백이 너무 많아서 임팩트가 부족함, 최소 10 가지 적용" 이라는 피드백을 받아 데코 레이어 12 개를 추가한 버전이다. v1.7·v1.8 은 섹션 구조에 대한 작업이었고, v1.9 는 그 구조 위에 시각 레이어를 채우는 작업이다.

이 글에서 다루는 것

  • "여백이 많다" 는 피드백이 실제로 의미하는 것
  • 조합 가능한 12 가지 보조 레이어—파스텔 orb, 그레인, conic ray, dust—를 조합한 방법
  • "warm deep purple-gray" 다크 톤으로 순수 검정에서 어느 정도의 온도를 올린 이유
  • 활용하던 17MB 인트로 영상을 일단 제거했다가 v2.4 에서 선택적으로 복구하게 된 맥락
  • 모르는 단어 한 줄로

    용어한 줄 설명
    orb동그란 파스텔 빛덩어리. <code>border-radius: 9999px</code> + <code>filter: blur(80px)</code>
    그레인 텍스처아주 작은 노이즈 패턴. 단조롭지 않도록 배경에 덱을 입힌다
    conic ray한 점에서 부채꼴처럼 퍼지는 빛살. <code>conic-gradient</code> 로 구현
    VOL 칩"VOL. 03" 같이 잡지 표지에서 보는 작은 라벨
    ghost 번호섹션 번호를 아주 연하게 (예: opacity 0.05) 대형으로 그리고 배경으로 깔아둔 것

    무엇이 바뀌었나

    항목v1.8.1v1.9
    여백섹션마다 큰 공백, 한산함파스텔 orb 6 + 그레인 + conic + dust 파티클
    섹션 라벨가운데 제목만좌측 매거진 라벨 + ghost 번호 + VOL 칩
    HeroPOP·SPOT 한 단어 + CTA거대 outline + 폴라로이드 4 장 + 마킨 스트립
    다크 베이스순수 검정 (#0a0a0a)warm deep purple-gray 그라디언트 (#1a1820 → #221e2a)
    영상 배경17MB mp4 고정 로드영상 제거 + 파스텔 + 데코 레이어로 대체 (v2.4 에서 선택적 복구)

    12 개 레이어. 라이트·다크 양쪽 적용. 857 라인.


    왜 이렇게 했음

    여백의 문제는 크기가 아니었다 — 피드백은 "여백 넓은 게 문제" 같아 보였지만 실제는 "여백이 텍 비어 있고 아무것도 안 깔려 있어서" 떨어지는 느낌이었다. 여백을 줄이면 해결 → 관계 없음. 대신 그 여백에 보조 레이어 (orb / 텍스처 / ray / particle) 를 깔아서 "의도된 조용함" 으로 바꿔주어야 함.

    다크 톤을 "warm purple-gray" — 순수 검정 (#0a0a0a) 은 "웹을 아직 만드는 중" 같은 느낌을 준다. 팝업이라는 주제와도 멀다. 보라를 짙은 회색에 살짝 섞은 정도의 #1a1820 → #221e2a 그라디언트로 가면 따뜻한 느낌이 든다.

    영상 제거 — v1.7·v1.8 의 인트로 풀스크린 비디오 (17MB mp4) 은 모바일에서 버볍거렸고 데이터 소모도 했다. v1.9 에서 일단 제거하고 정적 레이어로 대체. 그래도 비디오가 주는 동적인 명황 (실제 팝업을 걷는 장면) 이 아쉬워서 v2.4 에서 토글로 부활시키게 된다.


    코드로는 어떻게 (필요한 부분만)

    파스텔 orb 레이어.

    파일: popspot-frontend/src/app/intro/page.tsx 안 Hero 섹션 부분

    typescript
    // v1.9 — 파스텔 orb 레이어 1 (앞쪽 좌상단 핏크 광채)
    <div className="absolute -top-40 -left-40 w-[600px] h-[600px]
    //                ^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^
    //                |        |       |        |          |
    //                |        |       |        |          +-- 세로 600px
    //                |        |       |        +-- 가로 600px. 대괄호는 Tailwind 의 arbitrary value 표기
    //                |        |       +-- 좌측으로 10rem(160px) 너머감. 원의 왼쪽 끝이 화면 밖으로 숨겨짐
    //                |        +-- 동일하게 상단으로 너머감. 원의 한 조각만 처음에 보이게 함
    //                +-- absolute — 부모의 relative 좌표계에서 떠있음. 문서 흐름을 차지하지 않음
                    rounded-full bg-pink-400/30 blur-[120px]
    //              ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^
    //              |             |              |
    //              |             |              +-- CSS filter: blur(120px). orb 의 테두리를 완전히 퍼뜨려 광채로 만듦
    //              |             |                  이 px 값이 클수로 부드러움. 120px 은 적당히 은은한 편
    //              |             +-- 핏크 400 단계 30% 불투명 (파스텔 느낌)
    //              +-- border-radius:9999px. 완전한 원형
                    pointer-events-none" />
    //              ^^^^^^^^^^^^^^^^^^^^   마우스 이벤트를 통과시키 — 호버·클릭이 본문으로 전달됨
    //                                      장식 레이어는 상호작용을 막으면 안 됨
    
    // v1.9 — 파스텔 orb 레이어 2 (우측 중간·상단 에 바이올렛)
    <div className="absolute top-[20%] right-[-200px] w-[500px] h-[500px]
    //                         ^^^^^^^^   ^^^^^^^^^^^^^                       세로 20% 지점, 가로 우측 200px 밖
    //                                                                        좌상단 orb 와 대각선으로 배치
                    rounded-full bg-violet-400/30 blur-[100px]
    //                             ^^^^^^^^^^^^^^                              바이올렛 — 핏크·바이올렛은 포인트로 잘 어울리는 조합
                    pointer-events-none" />
    
    // ... 이런 패턴으로 총 6개 (lime·amber·sky·teal 을 고르게 섞음)
    // 원칙: 서로 다른 위치, 다른 색, 다른 크기 — "동일 패턴 반복" 느낌이 안 나게 함
    // blur 는 GPU 합성 레이어로 처리되므로 6개도 60fps 유지

    좌측 매거진 라벨 + ghost 번호.

    파일: 같은 intro/page.tsx 안 각 섹션 래퍼 (반복 구조)

    typescript
    // v1.9 — 잡지 표지 느낌 적용. 좌상단 VOL 칩 + 배경 은은한 대형 숫자
    <section className="relative">
    //                  ^^^^^^^^   내부 absolute 자식이 이 섹션을 기준으로 자리잡음
      <div className="absolute left-0 top-0 text-xs tracking-widest">
    //                ^^^^^^^^                ^^^^^^^ ^^^^^^^^^^^^^^^^
    //                |                       |       |
    //                |                       |       +-- letter-spacing 넓힘. 잡지·커버 제목 느낌
    //                |                       +-- text-xs — 0.75rem 가장 작은 표준 폰트
    //                +-- absolute — 부모 section 의 left:0, top:0 에 붙이기
        VOL. 03  —  WHY POP-SPOT
    //  ^^^^^^^                       잡지 권호처럼 읽먀. 시리즈 속 구별용
      </div>
      <span className="absolute -left-12 top-20 text-[280px] font-black
    //                  ^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^
    //                  |        |        |       |              |
    //                  |        |        |       |              +-- font-weight:900 최대 굵기
    //                  |        |        |       +-- 280px 큰 글자. 잡지 커버 타이포 괄로 쓰임
    //                  |        |        +-- top-20 — 상단 5rem(80px)
    //                  |        +-- -left-12 — 좌측으로 3rem(48px) 너머감. 일부 잘린 채 보임
    //                  +-- absolute — 위 section 의 좌표계로 광레
                       text-zinc-900/[0.04] select-none">03</span>
    //                 ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^
    //                 |                    |
    //                 |                    +-- 드래그로 선택 차단 — 잡지 느낌을 손상하지 않음
    //                 +-- zinc-900 를 4% 불투명으로 (arbitrary 0.04) — 그림자처럼 희미하게
    //                     280px 큰 숫자가 배경으로 깔려 있을 뿐 읽힌은 잘 안 되어 "그림자" 느낌만 주고 본문 가독성 유지
      {/* ... 실제 컨텐츠 */}
    </section>

    핵심 파일: popspot-frontend/src/app/intro/page.tsx


    직접 보는 법

    popspot.co.kr 의 인트로 페이지를 따라 스크롤. 각 섹션에 좌상단 라벨·배경의 연한 숫자·파스텔 광채가 있다. 그게 v1.9 에서 들어간 12 레이어 중 일부.


    관련 글

  • 이전 — v1.8, 미니 위젯 프리뷰
  • 다음 — v2.0, 회원가입 없이 7일 둘러보기 + 보안 7대 안전장치
  • 공유

    댓글