개발 slecs

카테고리 페이지 레이아웃 가운데 정렬 깨짐 수정

목차

레이아웃 가운데 정렬이 특정 카테고리 페이지에서만 깨져 있던 걸 발견하고, cat-section wrapper 를 씌워서 복원했다.


배경: 왜 카테고리 페이지만 틀어졌나

메인 피드나 개별 포스트 페이지는 정렬이 멀쩡한데, /c/[category] 경로로 들어가면 post-grid 가 좌측으로 붙어버리는 현상이 있었다. 처음엔 CSS 캐시 문제인가 싶어서 빌드를 다시 돌려봤지만 달라지지 않았고, 마크업을 직접 열어보니 구조적인 차이가 원인이었다.

다른 페이지들은 콘텐츠 영역을 감싸는 section 혹은 wrapper 가 존재해서 Flexbox/Grid 의 margin: autojustify-content: center 가 제대로 먹히는 반면, [category].astropost-grid 가 페이지 루트 바로 아래 노출되는 구조였다. wrapper 없이 grid 컨테이너를 바로 두면, 부모의 정렬 컨텍스트를 못 받아서 가운데 정렬이 무너진다. 이건 Astro 특유의 문제라기보다 어느 컴포넌트 기반 프레임워크에서도 똑같이 발생하는 구조적 함정이다.


작업 내용: cat-section wrapper 추가

변경 파일은 src/pages/c/[category].astro 단 하나. stat 이 명시되지 않았으니 추가 라인 수가 아주 크진 않겠지만, 핀포인트 수정답게 의도가 명확했다.

<!-- Before -->
<Layout>
  <PostGrid posts={posts} />
</Layout>

<!-- After -->
<Layout>
  <section class="cat-section">
    <PostGrid posts={posts} />
  </section>
</Layout>

cat-section 이라는 이름을 쓴 건 단순히 "카테고리 페이지 전용 wrapper" 라는 의미를 스타일시트에서도 명시적으로 드러내기 위해서다. 범용 .container.wrapper 로도 해결은 되지만, 나중에 카테고리 페이지에 헤더 타이틀이나 필터 UI 를 붙일 가능성이 있을 때 .cat-section 이 있으면 스코프 잡기가 훨씬 편하다. 이런 작은 네이밍 선택이 나중에 코드리뷰 때 "왜 여기만 다른 클래스야?" 라는 질문을 줄여준다.


이런 류의 정렬 버그가 자주 터지는 이유

카테고리/태그 같은 동적 라우팅 페이지는 개발 초기에 "일단 리스트만 뿌리자" 는 마음으로 빠르게 짜는 경우가 많다. 그러다 보면 다른 정적 페이지들에는 공통 wrapper 패턴이 정착돼 있는데, 동적 라우팅 쪽만 빠져 있는 상황이 생긴다.

증상 원인 해결 패턴
특정 페이지만 좌측 정렬 wrapper 누락, 부모 컨텍스트 부재 section/div wrapper 추가
전체 페이지 정렬 틀어짐 공통 Layout CSS 변경 Layout 레벨에서 수정
반응형에서만 깨짐 미디어 쿼리 스코프 문제 wrapper + 미디어 쿼리 재점검

이번 케이스는 첫 번째 행이었다. Layout 을 건드리지 않고 해당 페이지 파일 하나만 수정해서 범위를 최소화한 게 포인트다. 공통 Layout 을 건드리면 다른 페이지에 사이드 이펙트가 생길 수 있어서, 영향 범위를 좁히는 게 맞다고 판단했다.


회고

솔직히 이런 버그는 "왜 이게 안 됐지?" 보다 "왜 이걸 빠뜨렸지?" 가 맞는 질문이다. 동적 라우팅 페이지를 추가할 때 공통 레이아웃 패턴을 체크리스트로 만들어두지 않으면, 이런 걸 나중에 하나씩 줄줄이 잡게 된다. 특히 Astro 처럼 파일 기반 라우팅에서 페이지 템플릿을 개별 파일로 관리할 때는, 새 라우트 추가 시 "다른 페이지의 마크업 구조와 일관성이 맞는지" 를 반드시 확인하는 습관이 필요하다. 팀이 커지면 이런 걸 PR 체크리스트나 공통 페이지 스켈레톤 템플릿으로 강제화하는 것도 방법이다.

끝.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.