파트너 정산 카드 빈공간을 반응형 그리드로 해결
목차
빈공간이 거슬려서 시작한 작업
이커머스 대시보드에 파트너별 정산 요약 카드를 띄워두는데, 화면 우측에 빈공간이 한참 남아있는 게 영 꼴보기 싫었음. 파트너가 5명일 때나 12명일 때나 카드가 같은 폭으로 박혀서, 적을 땐 넉넉하지 못하고 많을 땐 답답했음.
원인은 단순했음. 그리드를 고정 컬럼 수(4열)로 박아둔 거였음. 화면이 넓어도 카드는 안 늘어나고, 좁아지면 줄바꿈만 일어나는 식.
어떻게 고쳤나
CSS Grid의 auto-fit + minmax로 전환. 카드 최소 폭만 정해두면 컨테이너 폭에 맞춰 컬럼 수가 자동 조정됨.
.partner-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 16px;
}
핵심 포인트:
auto-fit: 빈 트랙을 0으로 접어버려서 카드가 남은 공간을 균등하게 차지auto-fill이 아닌 이유: 빈 셀을 유지해서 우측에 또 빈공간이 생김minmax(240px, 1fr): 최소 240px 보장, 최대는 남은 공간 균등 분배
auto-fit vs auto-fill
| 옵션 | 빈 셀 처리 | 화면 결과 |
|---|---|---|
| auto-fill | 빈 트랙 유지 | 카드 적을 때 우측 공백 |
| auto-fit | 빈 트랙 0으로 축소 | 카드가 늘어나서 꽉 참 |
이거 한 줄 차이로 시각적 결과가 완전히 달라짐. 처음엔 auto-fill로 짰다가 빈공간이 그대로 남아서 다시 갈아엎었음.
케이스별 컬럼 수
| 화면 폭 | 카드 수 | 컬럼 수 |
|---|---|---|
| 1440px | 12 | 5열 (자동) |
| 1024px | 12 | 4열 |
| 768px | 12 | 3열 |
| 480px | 12 | 1열 |
모바일은 미디어쿼리 한 줄로 강제 1열 처리. minmax 최소값(240px)이 모바일 폭보다 작아도 시각적으로 너무 좁게 잘려서 가독성이 깨졌음.
@media (max-width: 480px) {
.partner-grid { grid-template-columns: 1fr; }
}
회고
- 30분이면 끝나는 작업인데 미루고 미뤘던 게 본인 문제였음. 화면 들어갈 때마다 거슬리면서도 "다음 스프린트에" 하다가 결국 컴플레인 들어와서 부랴부랴 처리함
- 작은 시각적 디테일이 신뢰도에 생각보다 크게 영향 줌. "관리 안 되는 것 같다"는 인상을 빈공간 하나가 줘버림
- CSS만 만지는 작업이라도 PR 올리기 전에 카드 0개/1개/12개/50개 케이스 다 확인하는 습관은 유지하는 중
다음
댓글 0
첫 댓글 달아줘.