~ / developer / css-flexbox-generator

📐 CSS Flexbox 생성기

flex-direction, justify-content, align-items, gap, wrap 값을 고르면 박스 배치를 바로 미리 보고 CSS 코드를 복사해요.

광고
광고
preview
css
세로 높이미리보기는 240px 고정
광고

사용법

  1. 위쪽 프리셋 버튼(가운데 정렬, 네비게이션, 카드 줄바꿈 등)을 눌러 시작하거나, 각 선택 칸에서 값을 직접 골라요.
  2. 미리보기 상자의 번호 박스가 어떻게 배치되는지 확인하면서 방향, 줄바꿈, 주축 정렬(justify-content), 교차축 정렬(align-items), 간격(gap)을 바꿔 보세요. 박스 수도 바꿀 수 있어요.
  3. 오른쪽 CSS 코드는 기본값과 같은 속성을 빼서 짧게 만들어 줘요. copy 버튼으로 복사해 붙여 넣으세요.

Flexbox의 핵심: 주축과 교차축

Flexbox는 한 줄(또는 한 열) 안에서 아이템을 배치하는 CSS 레이아웃 방식이에요. 부모에 display: flex를 쓰면 자식들이 아이템이 되고, 두 개의 축으로 움직여요. 주축(main axis)은 flex-direction이 정하는 방향(row면 가로, column이면 세로)이고, 교차축(cross axis)은 주축과 수직이에요. 헷갈리는 justify-content와 align-items는 이 축으로 구분해요. justify-content는 주축 방향 정렬, align-items는 교차축 방향 정렬이에요. row 방향이면 justify-content는 좌우, align-items는 위아래를 맡고, column으로 바꾸면 역할이 서로 바뀌어요.

속성별 값 정리

속성값하는 일
flex-directionrow, row-reverse, column, column-reverse주축 방향. reverse는 순서를 거꾸로 배치
flex-wrapnowrap, wrap, wrap-reverse아이템이 넘칠 때 줄바꿈할지. 기본 nowrap은 줄어들며 한 줄에 유지
justify-contentflex-start, flex-end, center, space-between, space-around, space-evenly주축 방향 정렬. space-between은 양끝에 붙이고 사이를 균등, space-evenly는 가장자리도 같은 간격
align-itemsstretch, flex-start, flex-end, center, baseline교차축 정렬. 기본 stretch는 높이를 채워 늘림. baseline은 글자 기준선 맞춤
align-contentnormal, flex-start, flex-end, center, space-between, space-around, stretch줄이 여러 개일 때(wrap) 줄들을 교차축에서 어떻게 배치할지. 한 줄이면 효과 없음
gap길이 (예: 12px)아이템 사이 간격. margin 없이 간격을 줄 수 있어요
flex-grow숫자 (0, 1, 2…)남은 공간을 나눠 가질 비율. 0이면 늘어나지 않음

자주 쓰는 패턴

1. 가운데 정렬

가로·세로 가운데 정렬은 부모에 아래 세 줄이면 끝나요. 부모에 높이가 있어야 세로 가운데가 의미가 있어요.

.container {
  display: flex;
  justify-content: center;
  align-items: center;
}

2. 네비게이션 (로고 왼쪽, 메뉴 오른쪽)

.container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

justify-content: space-between은 첫 아이템을 왼쪽 끝, 마지막 아이템을 오른쪽 끝에 붙이고 나머지를 사이에 균등 분배해요. 아이템이 두 개뿐이면 양끝 배치가 돼요.

3. 줄바꿈되는 카드 목록

.container {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 12px;
}

flex-wrap: wrap이 있어야 아이템이 넘칠 때 다음 줄로 내려가요. 이때는 align-content로 줄 묶음의 위치를 정할 수 있어요. 카드 폭은 보통 flex: 1 1 200px처럼 자식에 최소 폭을 줘서 화면 크기에 따라 개수가 자동으로 바뀌게 해요.

4. 세로 스택

.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

5. 사이드바 + 본문

사이드바는 고정 폭(width: 240px)으로 두고 본문에 flex-grow: 1을 주면 남는 공간을 본문이 모두 차지해요. 이 생성기의 "아이템 1 flex-grow" 값을 1로 올리면 첫 박스가 남는 공간을 차지하는 모습을 확인할 수 있어요.

아이템에 쓰는 속성: flex, align-self, order

부모 설정만으로 부족할 때 자식에게 개별 속성을 줄 수 있어요. flex는 flex-grow flex-shrink flex-basis를 한꺼번에 쓰는 축약형이에요. flex: 1은 남는 공간을 같은 비율로 나눠 갖고, flex: 0 0 200px은 늘지도 줄지도 않는 200px 고정 폭이에요. align-self는 해당 아이템만 교차축 정렬을 다르게 지정하고(예: 부모는 center인데 한 아이템만 flex-end), order는 HTML 순서를 바꾸지 않고 화면에서의 순서만 바꿔요. 다만 order로 시각 순서만 바꾸면 키보드 탐색 순서와 어긋나 접근성 문제가 생길 수 있으니 꼭 필요할 때만 쓰세요.

반응형으로 만들 때는 모바일에서 flex-direction: column, 넓은 화면에서 row로 바꾸는 방식을 가장 많이 써요. 미디어 쿼리로 방향만 바꿔도 같은 마크업으로 두 가지 레이아웃을 만들 수 있고, 이 생성기에서 방향을 바꿔 보며 어떻게 보일지 확인할 수 있어요. 간격은 gap, 폭은 flex-basis, 줄바꿈은 wrap으로 역할을 나누면 코드가 단순해져요.

광고

미리보기가 보여 주는 것

미리보기의 박스는 일부러 크기가 서로 다르게 했어요(번호에 따라 안쪽 여백이 달라요). 크기가 같으면 align-items의 차이가 잘 안 보이기 때문이에요. stretch는 가장 큰 박스에 맞춰 늘리지 않고 컨테이너 높이까지 채우고, center는 가운데, baseline은 글자 기준선으로 정렬하는 모습을 확인해 보세요. wrap을 켠 뒤 아이템 수를 12개로 늘리면 align-content가 줄 묶음의 위치를 어떻게 바꾸는지 볼 수 있어요.

Flexbox 대신 Grid를 쓸 때

Flexbox는 한 방향(1차원) 배치에 알맞아요. 메뉴 줄, 버튼 묶음, 카드 한 줄 같은 곳이에요. 행과 열을 동시에 맞춰야 하는 2차원 격자(갤러리, 대시보드, 폼 레이아웃)는 CSS Grid가 더 적합해요. 둘은 함께 쓰는 경우도 많아요. 큰 레이아웃은 Grid로, 카드 안쪽 정렬은 Flexbox로 잡는 식이에요.

광고
광고

자주 겪는 문제

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

자주 묻는 질문

justify-content와 align-items 차이가 뭐예요?
justify-content는 주축(flex-direction 방향) 정렬, align-items는 교차축 정렬이에요. row 방향이면 가로/세로, column 방향이면 세로/가로로 역할이 바뀌어요.
가로·세로 가운데 정렬은 어떻게 해요?
부모에 display: flex; justify-content: center; align-items: center; 를 쓰고 부모 높이를 정해 주세요. 프리셋 "가운데 정렬"을 누르면 코드가 바로 나와요.
space-between, space-around, space-evenly는 뭐가 달라요?
space-between은 양끝에 붙이고 사이만 균등, space-around는 아이템 양옆에 같은 여백(가장자리는 절반), space-evenly는 가장자리와 사이 간격이 모두 같아요.
flex-wrap을 켜도 줄바꿈이 안 돼요.
아이템에 폭이 없으면 줄어들며 한 줄에 남을 수 있어요. 자식에 width나 flex-basis(예: flex: 1 1 200px)로 최소 폭을 주세요.
gap과 margin 중 뭘 쓰는 게 좋아요?
아이템 사이 간격은 gap이 간단해요. 첫/마지막 아이템에 여백이 붙지 않아서 margin보다 계산이 쉬워요. 부모 바깥 여백은 padding이나 margin을 쓰세요.
Flexbox와 Grid 중 뭘 써야 해요?
한 줄(또는 한 열)에 늘어놓는 배치는 Flexbox, 행과 열이 동시에 맞는 격자는 Grid가 알맞아요. 필요하면 함께 써도 돼요.

관련 도구

광고

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →