~ / developer / css-grid-generator

🔲 CSS Grid 생성기

열 수, gap, 행 높이, 정렬 값을 고르면 격자 배치를 바로 미리 보고 CSS 코드를 복사해요.

preview
css
미리보기높이 260px, 넘치면 스크롤
광고

사용법

  1. 위쪽 프리셋(3열 카드, 반응형 카드, 사이드바, 12열 등)을 눌러 시작하거나 아래 항목을 직접 바꿔요.
  2. 열 방식은 세 가지예요. "고정 열 수"는 repeat(N, 1fr), "자동 맞춤"은 repeat(auto-fit, minmax(최소폭, 1fr)), "직접 입력"은 240px 1fr처럼 열 폭을 그대로 써요.
  3. 가로·세로 간격(gap), 행 높이(0이면 내용에 맞춤), justify-items·align-items를 바꾸며 미리보기에서 결과를 확인하세요.
  4. 오른쪽 CSS 코드는 기본값과 같은 속성을 뺀 짧은 코드예요. copy 버튼으로 복사해 붙여 넣으세요.

CSS Grid의 기본 개념

Grid는 부모에 display: grid를 주면 자식들이 행과 열로 이뤄진 격자에 놓이는 2차원 레이아웃 방식이에요. Flexbox가 한 줄(또는 한 열)에서 아이템을 늘어놓는 데 알맞다면, Grid는 행과 열을 동시에 맞춰야 하는 갤러리·대시보드·폼 같은 곳에 알맞아요. 핵심은 grid-template-columns로 열의 개수와 폭을 정하는 것이고, 행은 아이템이 늘어나면 자동으로 만들어져요(암시적 행). 행 높이는 grid-auto-rows로 정해요.

fr 단위와 repeat(), minmax()

자주 쓰는 패턴과 코드

1. 3열 카드

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

2. 반응형 카드 (auto-fit)

.container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}

화면이 넓으면 4~5열, 좁아지면 2열, 1열로 자동으로 줄어요. 카드 개수가 열 수보다 적을 때 남는 공간까지 채우려면 auto-fit, 열 크기를 유지하고 빈 칸을 남기려면 auto-fill을 써요.

3. 사이드바 + 본문

.container {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 20px;
}

왼쪽은 240px 고정, 오른쪽은 남는 공간 전체를 차지해요. 모바일에서는 미디어 쿼리로 grid-template-columns: 1fr로 바꿔 한 열로 쌓으면 돼요.

4. 12열 그리드

.container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 8px;
}

자식에서 grid-column: span 4처럼 쓰면 4칸을 차지해요. 부트스트랩 같은 12열 시스템을 직접 만들 수 있어요.

5. 행 높이를 고정하고 가운데 정렬

.container {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 80px;
  gap: 4px 12px;
  justify-items: center;
  align-items: center;
}

영역 이름으로 배치하기 (grid-template-areas)

페이지 뼈대(머리글, 사이드바, 본문, 바닥글)를 만들 때는 칸에 이름을 붙이면 읽기 쉬워요. 부모에 grid-template-columns: 240px 1fr를 주고 grid-template-areas: "header header" "sidebar main" "footer footer"처럼 쓴 뒤, 자식에 grid-area: header 같은 이름을 붙이면 돼요. 모바일에서는 areas를 한 열로 다시 정의해 순서를 쌓으면 돼요. 이 생성기는 열과 간격 위주라서 areas는 코드를 복사한 뒤 직접 덧붙여 쓰세요.

반응형으로 쓰는 요령

미디어 쿼리 없이 반응형을 만들고 싶다면 auto-fit과 minmax 조합을 먼저 시도해 보세요. 열 수가 꼭 정해져야 하는 디자인(PC 4열, 태블릿 2열, 모바일 1열)이면 @media (max-width: 900px) { .container { grid-template-columns: repeat(2, 1fr); } }처럼 구간마다 열 수를 바꿔요. 간격(gap)은 모바일에서 줄이는 편이 보기 좋아요. 이미지가 든 카드는 aspect-ratio로 비율을 고정하면 행 높이를 따로 정하지 않아도 가지런해요. 카드마다 글 길이가 달라도 같은 행의 카드 높이가 같게 늘어나는 것이 Grid의 기본 동작(stretch)이라서, 카드 하단 버튼을 같은 높이에 맞추기도 쉬워요. 카드 안쪽 여백과 글자 크기는 px ↔ rem 변환기로 맞추면 편해요.

속성 정리

속성하는 일
grid-template-columns열 개수와 폭 정하기 (repeat, fr, minmax, auto-fit)
grid-auto-rows자동으로 생기는 행의 높이. 0이 아니면 고정, minmax(80px, auto)처럼 최소 높이 가능
gap (row-gap column-gap)행·열 사이 간격. 값 두 개면 행 간격, 열 간격 순서
justify-items칸 안에서 아이템의 가로 정렬 (stretch, start, end, center)
align-items칸 안에서 아이템의 세로 정렬 (stretch, start, end, center)
grid-column / grid-row(자식) 몇 번째 칸에서 시작하고 몇 칸 차지할지. span 사용
grid-template-areas이름으로 영역 배치 (header, sidebar, main 등)

Flexbox와 Grid 선택 기준

메뉴 줄, 버튼 묶음, 카드 안쪽 정렬처럼 한 방향 배치는 Flexbox가 간단해요. 갤러리, 대시보드, 폼 레이아웃처럼 행과 열을 함께 맞추는 배치는 Grid가 코드가 짧아요. 큰 틀은 Grid로 잡고 칸 안의 내용 정렬은 Flexbox를 쓰는 조합이 많아요. Flexbox 값은 CSS Flexbox 생성기에서 미리 볼 수 있어요.

자주 겪는 문제

값 목록은 MDN Web Docs의 CSS Grid Layout 문서 기준이에요. 미리보기는 이 브라우저에서 바로 그려지고 입력값은 밖으로 나가지 않아요.

자주 묻는 질문

fr 단위가 뭐예요?
남는 공간을 비율로 나눠 갖는 단위예요. 1fr 2fr이면 남는 폭을 1:2로 나눠요. 고정 폭(px)과 섞어 쓸 수도 있어요.
auto-fit과 auto-fill 차이는요?
둘 다 들어갈 만큼 열을 자동으로 만들어요. 카드가 적을 때 auto-fit은 남는 공간까지 카드를 늘려 채우고, auto-fill은 빈 열을 남겨 둬요.
반응형 카드 목록은 어떻게 만들어요?
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) 한 줄이면 화면 폭에 맞게 열 수가 자동으로 바뀌어요. 프리셋 "반응형 카드"를 눌러 보세요.
gap 값 두 개는 어떤 순서예요?
첫 번째가 행 간격(row-gap), 두 번째가 열 간격(column-gap)이에요. 하나만 쓰면 둘 다 같은 값이에요.
특정 칸을 더 넓게 쓰려면요?
자식에 grid-column: span 2처럼 쓰면 2칸을 차지해요. 시작 위치를 정하려면 grid-column: 1 / 3처럼 선 번호를 써요.
Flexbox 대신 Grid를 써야 할 때는요?
행과 열을 동시에 맞춰야 하는 격자 배치(갤러리, 대시보드, 폼)에는 Grid가 알맞아요. 한 줄 정렬은 Flexbox가 간단해요.

관련 도구

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →