CSS Flexbox 생성기

CSS Flexbox 레이아웃을 시각적으로 구성. flex-direction, wrap, justify-content, align-items 등을 라이브 미리보기로 설정. 무료 온라인 도구.

  • 브라우저에서 처리
  • 데이터가 브라우저 밖으로 나가지 않습니다
  • 무료 · 회원가입 불필요
row, row-reverse, column, column-reverse를 선택하세요. 미리보기와 CSS가 즉시 업데이트됩니다.
nowrap, wrap, wrap-reverse를 선택해 아이템이 여러 줄을 만드는지 설정하세요.
CSS 간격을 입력하세요. 한 값은 양방향, 두 값은 행 간격·열 간격 순서입니다. 빈 값은1rem이며 검증하지 않습니다.
미리보기 아이템 수를1~8로 설정하세요. 상자 수가 바뀌며 출력 규칙은 컨테이너 속성만 포함합니다.
정렬 설정
flex-direction이 정하는 주축을 따라 공간을 나누는 방식을 선택하세요. 기본값은 normal입니다.
교차 축에서 아이템을 정렬하는 방식을 선택하세요. 기본값은 normal이며 컨테이너 속성을 설정합니다.
줄바꿈된 줄을 교차 축에서 정렬하는 방식을 선택하세요. nowrap에서는 효과가 없습니다. 기본값은 normal입니다.
일곱 선언의 전체 .container 규칙을 복사하세요. Ctrl/⌘+L은 간격, CSS, 미리보기를 지우고 선택과 수는 유지합니다. 실패하면 다시 시도하거나 CSS를 선택하세요.

자세한 가이드 읽기 CSS Flexbox 생성기: 플렉스 레이아웃을 시각적으로 구축하고 CSS 내보내기
예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.

생성되는 CSS

생성기는 .container 규칙 하나를 출력하며, 선언은 display: flex, flex-direction, flex-wrap, justify-content, align-items, align-content, gap 일곱 개입니다. 스타일시트에 붙여넣고 .container를 자신의 클래스명으로 바꾸세요. 기본값과 같은 값도 빠짐없이 쓰므로 필요 없는 줄은 지워도 됩니다.

드롭다운의 기본값은 CSS 초깃값입니다: row, nowrap, justify-content·align-items·align-content는 normal. 플렉스 컨테이너에서 normal은 교차 축으로 아이템과 줄바꿈된 줄을 늘이고 주 축에서는 시작점부터 배치하므로(CSS Box Alignment Level 3) 이 세 줄은 쓰지 않은 것과 같습니다. gap: 1rem은 다릅니다. 플렉스 컨테이너의 gap 초깃값은 normal, 즉 0이므로 기본 규칙에서도 아이템 사이에 1rem 간격이 생깁니다. 필요 없으면 이 줄을 지우세요. 기본 출력은 다음과 같습니다.

.container {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: normal;
  align-items: normal;
  align-content: normal;
  gap: 1rem;
}

출력에는 컨테이너 속성만 들어가며, 아이템에 쓰는 flex나 order는 포함되지 않습니다.

예시: 게시판 페이지 번호

게시판 목록 아래의 “이전 1 2 3 4 5 다음” 같은 페이지 번호를 가운데에 모으는 경우입니다. 정렬 설정을 열어 justify-content를 center, align-items를 center로 바꾸고 간격에 4px를 넣습니다.

.container {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  align-content: normal;
  gap: 4px;
}

정렬 규칙대로 계산하면, 너비 360px 컨테이너에 40px 버튼 7개를 놓을 때 버튼과 간격이 304px을 쓰고 남는 56px이 양쪽에 28px씩 나뉩니다. 버튼의 왼쪽 끝은 28, 72, 116, 160, 204, 248, 292px입니다. 버튼에 flex-shrink: 0을 지정해 너비를 고정했는데 화면이 좁아 다 들어가지 않으면 center는 양쪽으로 똑같이 넘치기 때문에 첫 번째 버튼이 왼쪽 밖으로 잘릴 수 있습니다. 그럴 때는 flex-wrap을 wrap으로 바꾸거나 표시할 번호 수를 줄입니다.

예시: 해시태그 목록 줄바꿈

“#서울맛집 #주말나들이 #한강공원”처럼 개수가 정해지지 않은 해시태그를 여러 줄로 늘어놓는 경우입니다. flex-wrap을 wrap, align-items를 flex-start, align-content를 flex-start로 바꾸고 간격에 6px 8px를 넣습니다.

.container {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: normal;
  align-items: flex-start;
  align-content: flex-start;
  gap: 6px 8px;
}

간격 두 값은 행 간격, 열 간격 순서입니다. align-content를 flex-start로 두는 이유는 컨테이너에 높이가 있을 때입니다. 초깃값 normal은 줄바꿈된 줄을 늘여 남는 높이를 채우므로, 태그가 두 줄뿐인데 컨테이너가 높으면 줄 사이가 크게 벌어집니다. flex-start로 두면 줄이 위에서부터 차곡차곡 쌓입니다.

한글 라벨과 word-break: keep-all

nowrap인 줄에서 공간이 모자라면 아이템이 줄어듭니다. 아이템 최소 너비의 초깃값 auto는 내용을 가장 좁게 접었을 때의 너비(min-content)입니다. CSS Text Level 3 명세는 Korean has two styles of line-breaking: between any two Korean syllables (word-break: normal) or, like English, mainly at spaces (word-break: keep-all).라고 설명합니다. 따라서 기본값 normal에서는 “자주 묻는 질문” 같은 라벨이 한 음절 너비까지 줄어들어 한 글자씩 세로로 쌓일 수 있고, keep-all이면 가장 긴 어절의 너비가 최소 너비가 되어 어절 단위로만 줄을 바꿉니다.

라벨을 아예 한 줄로 두려면 라벨에 flex-shrink: 0이나 white-space: nowrap을 지정하고, 대신 옆의 요소가 줄어들 수 있게 합니다. 옆 요소도 고정 너비라면 내용이 컨테이너 밖으로 넘칩니다. 이 속성들은 아이템에 쓰는 것이라 생성기는 출력하지 않습니다.

제한 사항

  • 출력은 컨테이너 속성뿐입니다. flex-grow, flex-shrink, flex-basis, order, align-self 입력란은 없습니다.
  • justify-content에는 stretch, start, end가 없고 align-content에는 space-evenly가 없습니다. 필요하면 복사한 뒤 직접 고칩니다.
  • 간격 입력란은 값을 검증하지 않습니다. 잘못된 값도 그대로 복사되며 브라우저는 그 선언을 버립니다.
  • 미리보기 아이템 수는 1~8개입니다.
  • row-reverse, column-reverse는 보이는 순서만 바꿉니다. 키보드 포커스와 스크린 리더는 HTML 순서를 따릅니다.

Flexbox와 Grid 비교

1차원 레이아웃(단일 행 또는 열을 따른 아이템 배열)에는 Flexbox를 사용합니다. 행과 열을 동시에 제어하는 2차원 레이아웃에는 CSS Grid 생성기가 적합합니다.

FAQ

CSS Flexbox란 무엇인가요?

CSS Flexbox(유연한 박스 레이아웃)는 단일 축(행 또는 열)을 따라 공간을 분배하는 1차원 레이아웃 모델입니다. 내비게이션 바, 툴바, 카드 행, 요소 가운데 정렬, 단일 방향으로 유연하게 배열이 필요한 UI에 잘 맞습니다.

justify-content와 align-items의 차이는 무엇인가요?

justify-content는 주축(flex-direction으로 정의된 방향)을 따른 정렬을 제어합니다. align-items는 교차축(주축에 수직인 축)을 따른 정렬을 제어합니다. 행 방향 Flex 컨테이너에서 justify-content는 수평 정렬, align-items는 수직 정렬을 제어합니다.

flex-wrap은 언제 사용해야 하나요?

기본 flex-wrap은 nowrap으로, 모든 아이템이 한 줄에 유지되며 필요 시 축소됩니다. flex-wrap: wrap을 설정하면 아이템이 들어가지 않을 때 다음 줄로 넘어갑니다. 좁은 너비에서 다시 배치해야 하는 카드 행이나 태그 목록에 유용합니다.

align-content는 무엇을 하나요?

align-content는 줄바꿈된 각 줄을 교차축을 따라 어떻게 배치할지 정하며, flex-wrap이 wrap 또는 wrap-reverse일 때만 효과가 있습니다. wrap인 컨테이너는 아이템이 한 줄에 다 들어가도 여러 줄 컨테이너로 취급되어 align-content가 그 한 줄을 옮깁니다. nowrap이면 효과가 없습니다.

Flexbox의 gap 속성이란 무엇인가요?

gap(row-gap과 column-gap의 단축형)은 컨테이너의 바깥 가장자리에 마진을 추가하지 않고 Flex 아이템 사이의 간격을 설정합니다. 원래 Grid용 속성이었으며, Flex 컨테이너에서는 Chrome 84, Firefox 63, Safari 14.1 이후 버전에서 동작합니다.

설정한 값이 전송되거나 저장되나요?

아니요. CSS는 브라우저 탭 안에서 만들어지며, 선택한 값·간격·아이템 수는 서버로 전송되지 않고 브라우저 저장소에도 기록되지 않습니다. 페이지의 통계는 사용 이벤트(도구 이름과 동작: 생성 또는 복사)만 기록하며 설정값은 포함하지 않습니다.