• 고객센터
  • ★ 웹 무료강의

★ 웹 무료강의

모던DS 웹에이전시

웹 무료강의 | 프론트엔드 강의

CSS CSS Flexbox 플렉스 박스 레이아웃 기초설명

페이지 정보

profile_image
작성자 모던DS
조회 64회

본문

CSS Flexbox 플렉스 박스 레이아웃


 Flexbox란 무엇인가? 

1) 정의

  • Flexbox는 'Flexible Box(유연한 상자)'의 줄임말입니다.

  • 요소들을 행(가로) 또는 열(세로) 방향으로 자유자재로 배치하고 정렬하는 1차원 레이아웃 모델입니다.

2) 핵심 역할 (반응형 메뉴 예시)

  • 데스크탑 환경: 화면이 넓을 때는 메뉴 항목들을 가로로 넓게 벌려 배치합니다. (예: justify-content: space-between)

  • 모바일 환경: 화면이 좁아지면 메뉴를 세로로 쌓거나 간격을 좁게 조정하여 화면에 최적화된 레이아웃을 만듭니다. (예: flex-direction: column)


핵심 구조

  • Flex Container (부모): 정렬 규칙을 정하는 큰 바구니

  • Flex Items (자식): 바구니 안에 담긴 내용물

77044a127a5c824a243bd5f24414c9f9_1772122005_1788.png
 

핵심 요약

  • 중앙 정렬 공식: 부모에게 justify-content: center;align-items: center;를 주면 무조건 가운데로 옵니다.

  • 간격 주기: gap 속성을 사용하면 자식들 사이에 일정한 간격을 쉽게 줄 수 있습니다.


플렉스박스(Flexbox)는 웹 페이지의 레이아웃을 효율적으로 배치하기 위해 사용합니다. 기존의 float이나 position 방식보다 훨씬 유연하게 요소를 정렬할 수 있는 것이 장점입니다.

주로 다음과 같은 상황에서 필수적으로 사용됩니다.


1. 수평 및 수직 중앙 정렬

과거에는 요소를 화면 정중앙에 배치하는 것이 까다로웠으나, Flexbox를 사용하면 justify-content: center;align-items: center; 두 줄만으로 간단히 해결할 수 있습니다.


2. 반응형 레이아웃 구현

화면 크기에 따라 요소의 너비나 높이를 자동으로 조절해야 할 때 유용합니다. 창이 좁아지면 항목을 다음 줄로 넘기거나(wrap), 남은 공간을 똑같이 나누어 채우는 동작이 매우 쉽습니다.


3. 요소 간의 균등 간격 배치

메뉴 바나 내비게이션 바를 만들 때 항목 사이의 간격을 일정하게 벌리거나(space-between, space-around), 양 끝 정렬을 할 때 가장 많이 쓰입니다.


4. 순서 변경 및 방향 전환

HTML 구조를 바꾸지 않고도 CSS만으로 요소의 배치 순서를 역순으로 바꾸거나(row-reverse, column-reverse), 가로 배치를 세로 배치로 즉시 변경할 수 있습니다.



정리하자면:

  • display 속성: 부모 요소를 플렉스 컨테이너로 선언할 때 사용합니다.

  • flex-direction: 가로 또는 세로 방향을 결정할 때 사용합니다.

  • justify-content: 주축(메인축) 기준 정렬이 필요할 때 사용합니다.

  • align-items: 교차축(수직축) 기준 정렬이 필요할 때 사용합니다.

   <style>

    }
    body {    
      display: flex;      /* 플렉스 컨테이너 지정 */
      justify-content: center;  /* 주축 정렬 방법 - 중앙 정렬 */
      align-items: center;  /* 교차축 정렬 방법 - 중앙 정렬 */
     }
  </style>

 

Layer 방식 vs Flexbox 방식 비교

구분

레이어 방식 (과거)

Flexbox 방식 (현재)

핵심 속성

position, top, left, margin

display: flex, justify-content, align-items

중앙 정렬

요소의 가로/세로 길이를 알아야 정교한 계산 가능

자식 요소의 크기와 상관없이 무조건 중앙 배치 가능

반응형

화면이 변할 때마다 수치 재계산 필요

화면 크기가 변해도 유연하게 정렬 유지