Flexbox는 1차원 레이아웃 시스템입니다 — 아이템을 단일 행 또는 열로 배치하고 그 선을 따라 공간을 분배합니다. 예전에 float와 편법이 필요했던 정렬과 spacing 문제에 대한 최신 해답입니다.
css
{
: flex;
: row;
: ;
}
Flexbox에는 main axis(아이템이 흐르는 방향)와 cross axis(수직)가 있습니다. 속성이 이에 매핑됩니다.
.container {
justify-content: center; /* main axis를 따라 정렬 */
align-items: center; /* cross axis를 따라 정렬 */
}
.center {
display: flex;
justify-content: center; /* 수평 (main axis = row) */
align-items: center; /* 수직 (cross axis) */
min-height: 100vh;
}
이 세 줄이 자식을 수평과 수직 모두 가운데 정렬합니다 — Flexbox 이전에는 악명 높게 어려웠던 작업입니다.
/* 아이템을 양 끝으로 밀기: 로고 왼쪽, 메뉴 오른쪽 */
.navbar { display: flex; justify-content: space-between; align-items: center; }
/* 아이템이 안 맞으면 새 줄로 줄바꿈 */
.tags { display: flex; flex-wrap: wrap; gap: 0.5rem; }
justify-content 옵션에는 flex-start, center, flex-end, space-between, space-around, space-evenly가 있습니다.
Flexbox는 navbar, 버튼 그룹, 카드 행, 가운데 정렬, 그리고 모든 "아이템 한 줄" 레이아웃을 위한 일상 도구입니다.
main/cross axis 모델(그리고 flex-direction을 바꾸면 justify-content/align-items의 의미가 바뀐다는 점)을 이해하는 것이 핵심 멘탈 모델입니다.
1D 레이아웃에는 Flexbox를, 2D에는 Grid를 사용하세요.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기