CSS

Flex Responsive property

lshjju 2026. 2. 20. 13:57

웹 페이지의 요소를 유동적으로 배치하여 모든 화면 크기에 대응하게 만드는 CSS 플렉스박스(Flexbox)의 반응형 핵심 속성에 대해 알아보겠습니다.

플렉스박스는 요소의 크기가 불분명하거나 동적일 때도 항목 간의 공간을 배분하고 정렬하는 데 최적화된 1차원 레이아웃 모델입니다.


1. 반응형의 핵심: 가용 공간 배분

요소들이 화면 너비에 따라 늘어나거나 줄어들도록 만드는 3가지 핵심 속성입니다.

  • flex-grow: 남는 공간을 얼마나 가져갈지 결정합니다. (기본값 0)
  • flex-shrink: 공간이 부족할 때 얼마나 줄어들지 결정합니다. (기본값 1)
  • flex-basis: 요소의 기본 크기를 설정합니다. (width와 비슷하지만 플렉스 흐름에 따라 유동적입니다.)

꿀팁: 이 세 가지를 한 번에 쓰는 축약형 flex: 1 1 auto; 방식을 주로 권장합니다.


2. 줄 바꿈 제어: flex-wrap

반응형 디자인에서 가장 중요한 속성 중 하나입니다.

  • nowrap: 공간이 좁아져도 한 줄에 억지로 구겨 넣습니다. (기본값)
  • wrap: 공간이 부족하면 아이템들이 다음 줄로 자연스럽게 넘어갑니다. 모바일 화면에서 가로로 나열된 메뉴를 세로로 쌓을 때 필수적입니다.

3. 방향 전환: flex-direction

화면 크기에 따라 레이아웃의 축을 바꿀 수 있습니다.

  • row: 가로 방향으로 배치합니다. (데스크톱 기본)
  • column: 세로 방향으로 배치합니다. (모바일에서 주로 사용)

반응형 전략: 미디어 쿼리를 사용하여 데스크톱에서는 row, 모바일에서는 column으로 변경하는 것이 일반적인 패턴입니다.


🖥️ 실전 예제 코드: "반응형 카드 레이아웃"

미디어 쿼리와 플렉스박스 속성을 조합하여 화면 크기에 따라 변하는 레이아웃을 만들어 보겠습니다.

HTML
 
<style>
  .flex-container {
    display: flex;
    /* 기본적으로 가로 배치, 공간 부족 시 줄 바꿈 */
    flex-wrap: wrap;
    gap: 20px;
    padding: 20px;
  }

  .card {
    background-color: #f1f1f1;
    padding: 20px;
    border-radius: 10px;
    /* 1:1 비율로 늘어나고 줄어들며, 기본 너비는 300px */
    flex: 1 1 300px;
    text-align: center;
  }

  /* 모바일 화면 (너비 600px 이하) */
  @media (max-width: 600px) {
    .flex-container {
      /* 모바일에서는 요소를 세로로 길게 쌓음 */
      flex-direction: column;
    }
    
    .card {
      /* 모바일에서는 기본 너비 제한을 없앰 */
      flex-basis: 100%;
    }
  }
</style>

<div class="flex-container">
  <div class="card">카드 1</div>
  <div class="card">카드 2</div>
  <div class="card">카드 3</div>
</div>

📋 플렉스박스 반응형 속성 요약표

속성 설명 반응형 활용 팁
flex-wrap: wrap 요소 줄 바꿈 허용 모바일에서 요소가 넘치지 않게 함
flex-direction 배치 방향 설정 모바일(column) ↔ 데스크톱(row) 전환
flex-grow: 1 빈 공간 가득 채우기 화면이 넓어질 때 여백 없이 채움
flex-basis 요소의 최소/기본 크기 미디어 쿼리 없이도 어느 정도 반응형 구현 가능
order 시각적 배치 순서 변경 HTML 구조를 바꾸지 않고 요소 순서만 바꿈

학습 정리

  • 플렉스박스는 1차원(한 방향) 정렬에 특화되어 있어 내비게이션 바나 카드 리스트에 적합합니다.
  • **flex-wrap**과 **flex-basis**만 잘 활용해도 복잡한 미디어 쿼리 없이 유연한 레이아웃을 만들 수 있습니다.
  • justify-content(가로 정렬)와 align-items(세로 정렬)를 함께 써서 반응형 환경에서도 요소를 중앙에 유지하세요.

모든 기기에 완벽하게 대응하는 플렉스박스 반응형 기술을 정복하셨습니다!


'CSS' 카테고리의 다른 글

Flex Container property  (0) 2026.02.20
Flex Items property  (0) 2026.02.20
Flexbox game  (0) 2026.02.20
Grid lines and template areas  (0) 2026.02.20
Grid layout property  (0) 2026.02.20