본문 바로가기

웹퍼블리싱

CSS Flexbox 완전 정복: 쉽고 강력한 레이아웃 만들기

웹사이트를 만들 때 레이아웃을 깔끔하게 정렬하는 것은 매우 중요합니다.
과거에는 float, position, table 같은 방법을 사용했지만 복잡하고 유지보수가 어려웠습니다.

이제는 **CSS Flexbox(플렉스박스)**를 사용하면 간단하고 효율적으로 레이아웃을 만들 수 있습니다.
Flexbox는 한 줄의 코드만으로 요소를 가로/세로 정렬하고, 중앙 배치하는 강력한 기능을 제공합니다! 🚀

이 글에서는 Flexbox의 개념, 주요 속성, 실전 예제까지 초보자가 이해하기 쉽게 설명해 드리겠습니다.

 

CSS Flexbox 완전 정복: 쉽고 강력한 레이아웃 만들기


1. Flexbox란? (초보자를 위한 개념 정리)

Flexbox(플렉스박스)란?

  • CSS에서 레이아웃을 쉽게 만들도록 도와주는 기술
  • 요소를 가로, 세로 방향으로 자유롭게 정렬 가능
  • 여백을 자동으로 조정하여 반응형 웹에 적합

왜 Flexbox를 사용해야 할까?
✔️ float, position 없이도 중앙 정렬 가능
✔️ 세로 정렬도 손쉽게 가능 (기존 CSS에서는 어려움)
✔️ 모든 요소의 크기를 자동으로 조정하여 반응형 웹 제작 가능

📌 결론: Flexbox는 HTML 요소를 깔끔하게 정렬할 수 있도록 도와주는 강력한 도구! 🚀


2. Flexbox를 사용하려면? (기본 구조 설명)

Flexbox를 적용하려면 **부모 요소(Display: flex)와 자식 요소(Flex items)**의 개념을 이해해야 합니다.

기본 코드 구조

html
<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
</div>
css
.container {
    display: flex; /* 부모 요소에 flex 적용 */
    background-color: lightgray;
}

.item {
    width: 100px;
    height: 100px;
    background-color: steelblue;
    color: white;
    text-align: center;
    line-height: 100px;
    margin: 10px;
}

📌 결과: 자식 요소들이 가로 방향(수평)으로 정렬됨! 🚀


3. Flexbox의 주요 속성 (기본 정리)

1) display: flex; (Flexbox 활성화)

  • 부모 요소(container)에 적용해야 Flexbox 기능 사용 가능
  • 자식 요소들이 기본적으로 가로 방향(수평)으로 정렬됨
css
.container {
    display: flex; /* 플렉스 컨테이너 활성화 */
}

2) flex-direction (정렬 방향 설정)

자식 요소들의 배치 방향을 설정할 수 있습니다.

설명
row 기본값, 가로 정렬(왼쪽 → 오른쪽)
row-reverse 가로 정렬 (오른쪽 → 왼쪽)
column 세로 정렬(위 → 아래)
column-reverse 세로 정렬 (아래 → 위)
css
.container {
    display: flex;
    flex-direction: column; /* 요소들을 세로 방향으로 정렬 */
}

📌 결과: 요소들이 위에서 아래로 정렬됨 🎯


3) justify-content (가로 정렬)

가로 방향(main-axis)에서 요소들을 정렬하는 속성입니다.

설명
flex-start 왼쪽 정렬 (기본값)
flex-end 오른쪽 정렬
center 가운데 정렬
space-between 양쪽 정렬 (양 끝 요소는 붙고, 나머지는 동일한 간격 유지)
space-around 요소들 사이에 같은 간격 추가
space-evenly 요소들 사이 & 양끝 여백 동일
css
.container {
    display: flex;
    justify-content: center; /* 요소들을 가운데 정렬 */
}

📌 결과: 모든 요소가 가운데 정렬됨 🎯


4) align-items (세로 정렬)

세로 방향(cross-axis)에서 요소들을 정렬하는 속성입니다.

설명
flex-start 위쪽 정렬 (기본값)
flex-end 아래쪽 정렬
center 가운데 정렬
stretch 높이를 자동으로 늘림 (기본값)
baseline 텍스트 기준선에 맞춤
css
.container {
    display: flex;
    align-items: center; /* 세로 방향 가운데 정렬 */
}

📌 결과: 모든 요소가 세로 방향으로 중앙 정렬됨! 🎯


5) flex-wrap (줄바꿈 설정)

기본적으로 Flexbox는 한 줄에 모든 요소를 배치하려고 함
하지만, 요소가 많아질 경우 자동 줄바꿈이 필요할 수도 있습니다.

설명
nowrap 기본값, 한 줄에 강제로 배치
wrap 줄바꿈 허용 (여러 줄로 표시됨)
wrap-reverse 줄바꿈 허용 (순서 반대로)
css
.container {
    display: flex;
    flex-wrap: wrap; /* 요소들이 너무 많으면 줄바꿈 허용 */
}

📌 결과: 화면 크기가 작아지면 자동으로 줄바꿈됨! 🎯


4. 실전 예제: 중앙 정렬 박스 만들기

Flexbox를 사용하여 버튼을 가로/세로 중앙에 배치하는 방법!

html
<div class="center-box">
    <button>클릭하세요</button>
</div>
css
.center-box {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100vw;
    height: 100vh;
    background-color: lightgray;
}

button {
    padding: 10px 20px;
    font-size: 16px;
}

📌 결과: 버튼이 화면 정중앙에 배치됨! 🎯


5. Flexbox vs Grid (어떤 것을 써야 할까?)

Flexbox와 Grid는 각각의 장점이 있는 레이아웃 시스템입니다.

비교 항목 Flexbox Grid
정렬 방식 한 줄(1D) 정렬에 적합 가로+세로(2D) 정렬 가능
레이아웃 변경 유연하게 조정 가능 정확한 배치 필요
사용 사례 네비게이션, 버튼 정렬, 간단한 레이아웃 대형 웹사이트 레이아웃 제작

결론:

  • 작은 요소 정렬 → Flexbox 사용
  • 전체 레이아웃 디자인 → Grid 사용

6. Flexbox 학습을 위한 추천 사이트

무료 강의 & 문서

  1. MDN Flexbox 가이드
  2. CSS Tricks - Flexbox 가이드
  3. Flexbox Froggy 게임 (게임으로 Flexbox 배우기)

📌 결론: 직접 코딩하면서 실습해보는 것이 가장 좋은 학습 방법! 🚀


결론

Flexbox는 HTML 요소를 쉽게 정렬할 수 있는 강력한 CSS 기술!
가로/세로 정렬, 중앙 배치, 줄바꿈 등이 간단하게 가능
반응형 웹 제작 시 필수적으로 사용됨
실습을 많이 하면 금방 익숙해질 수 있음!

이제 Flexbox를 활용해서 깔끔한 웹사이트 레이아웃을 만들어 보세요! 🚀