[🎨CSS] 반응형 웹 시작하기 — viewport, 미디어쿼리, flex-wrap까지

2025. 4. 6. 15:49·🌐 Front-End

요즘 웹사이트는 PC, 태블릿, 모바일처럼 다양한 화면 크기에서 모두 자연스럽게 보이도록 설계해야 합니다. 이때 꼭 필요한 개념이 바로 반응형 웹(Responsive Web) 입니다. 반응형 웹을 제대로 만들기 위해서는 단순히 화면 크기에 맞춰 크기만 조정하는 게 아니라 레이아웃이 유연하게 변하고 요소들이 자연스럽게 재배치되도록 설계해야 합니다. 이 글에서는 반응형 웹을 구성하는 핵심 요소인 viewport 설정, 미디어쿼리(media query), flex-wrap 같은 기본 기술들을 차근차근 정리해보겠습니다.

 


 

1️⃣ 반응형 웹(Responsive Web)이란?

반응형 웹이란 하나의 HTML 코드로 다양한 화면 크기(PC, 태블릿, 모바일)에 자동으로 대응하는 웹 디자인 형식을 말합니다. 핵심은 한 번 개발해서 여러 디바이스에 맞게 자연스럽게 변하는 것입니다. 유연한 그리드 레이아웃, 유동적인 이미지 크기, 미디어쿼리(Media Query)를 이용합니다.

 

반응형 웹 = 유연한 레이아웃 + 자동 크기 조정 + 다양한 디바이스 지원

 

2️⃣ Viewport 설정이란?

viewport는 사용자가 보는 브라우저 화면의 보이는 영역을 의미합니다. 즉, 화면 창 크기입니다. 일반적으로 PC와 모바일은 화면 크기가 다르기 때문에 모바일에서도 레이아웃이 제대로 보이게 하려면 viewport를 올바르게 설정해야 합니다. 반응형 웹은 바로 이 viewport를 설정하는 것에서 시작됩니다.

 

📌 기본 Viewport 메타 태그 (HTML head 안에 꼭 넣어주기)

<meta name="viewport" content="width=device-width, initial-scale=1.0">

(※ width=device-width: 디바이스 화면 크기에 맞춤 / initial-scale=1.0: 기본 줌-배율-설정, 1배)

 

3️⃣ 미디어쿼리(Media Query) 기본 구조

미디어쿼리는 화면 크기, 해상도, 디바이스 종류 같은 조건에 따라 CSS 스타일을 다르게 적용하는 기능입니다.

@media (조건) { /* 적용할 스타일 */ }
/* 화면 너비가 768px 이하일 때 배경색이 lightblue로 바뀜 */
@media (max-width: 768px) {
  body {
    background-color: lightblue;
  }
}

 

📌 자주 쓰는 조건 종류

조건 의미
max-width 화면 너비가 이 값보다 작거나 같을 때
min-width 화면 너비가 이 값보다 크거나 같을 때
max-height / min-height 화면 높이 조건
orientation: portrait 세로 모드
orientation: landscape 가로 모드

 

✔️ 반응형 웹은 거의 `max-width` 중심으로 짬

✔️ 큰 화면 -> 작은 화면 순서로 내려가면서 스타일을 덮어씀

✔️ 주로 768px(태블릿 기준), 480px(모바일 기준) 으로 끊음

 

4️⃣ flex-wrap과 shrink를 활용한 반응형 레이아웃 만들기 예제

`flex-wrap`은 `flex-container` 안에서 아이템들이 공간이 부족할 때 줄바꿈을 허용하는 속성 입니다. 이로 인해 좁은 화면에서도 레이아웃이 깨지지 않고 자연스럽게 정렬됩니다. 한편  `flex-shrink`는 flex 아이템이 공간이 모자랄 때 얼마나 줄어들 수 있는지를 결정하는 속성입니다. 예를 들어 `flex-shrink: 0`으로 설정하면, 화면이 작아져도 해당 아이템의 크기를 유지할 수 있습니다. 반응형 레이아웃에서는 이 두 가지 속성을 함께 사용해 화면 크기에 따라 레이아웃은 유연하게 변하지만 중요한 요소는 크기를 고정하는 전략을 사용할 수 있습니다.

 

📌 flex-wrap + shrink 반응형 예제

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>flex-wrap 반응형 예제</title>
  <style>
    .flex-container {
      display: flex;
      flex-wrap: wrap; /* 공간이 부족한 경우 줄바꿈 허용*/
      background-color: #eee;
      padding: 10px;
    }

    .flex-item {
      flex: 0 0 200px; /* flex-grow 0, flex-shrink 0, flex-basis 200px */
      height: 100px;
      margin: 10px;
      background-color: lightcoral;
      display: flex;
      align-items: center;
      justify-content: center;
      font-weight: bold;
      font-size: 20px;
    }
  </style>
</head>
<body>

<h3>flex-wrap + shrink 반응형 예제</h3>

<div class="flex-container">
  <div class="flex-item">1</div>
  <div class="flex-item">2</div>
  <div class="flex-item">3</div>
  <div class="flex-item">4</div>
</div>

</body>
</html>

 

 

 


반응형 웹을 만들 때 가장 기본이 되는 세 가지는 viewport 설정, 미디어쿼리 작성, 그리고 flex-wrap을 통한 자연스러운 줄바꿈 처리입니다. 이번 글에서는 반응형 레이아웃을 시작하기 위한 핵심 요소를 정리했습니다. 다음 글에서는 반응형 웹에서 자주 사용하는 레이아웃 패턴과 구체적인 미디어쿼리 실전 적용법까지 이어서 정리해보겠습니다! 🚀

저작자표시 비영리 변경금지 (새창열림)

'🌐 Front-End' 카테고리의 다른 글

[🎨CSS] 반응형 웹 실전 패턴 정리 — 미디어쿼리 + 레이아웃 대응법  (0) 2025.04.06
[🎨CSS] CSS overflow 속성 총정리  (0) 2025.04.06
[🎨CSS] CSS z-index + stacking context 총정리  (0) 2025.04.06
[🎨CSS] CSS position 속성 총정리  (0) 2025.04.06
[🎨CSS] CSS display 속성 총정리  (0) 2025.04.06
'🌐 Front-End' 카테고리의 다른 글
  • [🎨CSS] 반응형 웹 실전 패턴 정리 — 미디어쿼리 + 레이아웃 대응법
  • [🎨CSS] CSS overflow 속성 총정리
  • [🎨CSS] CSS z-index + stacking context 총정리
  • [🎨CSS] CSS position 속성 총정리
파스트잇
파스트잇
  • 파스트잇
    파랑새를 냉장고에 넣는 방법
    파스트잇
    GitHub Ihyeon's GitHub
  • 전체
    오늘
    어제
  • 글쓰기 관리자
    • 전체 글 목록 (14)
      • ☕ Java (5)
        • 🌱 Spring (2)
      • 🟣 C# (0)
      • 🟨 JavaScript (0)
      • 🖥️ Back-End (0)
      • 🌐 Front-End (7)
      • 🧩 Algorithm (1)
        • Coding Test (0)
      • 🚀 Cloud & DevOps (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    상수 공간
    스프링부트
    java
    국비
    쿼리dsl
    자바
    스프링
    반응형
    Spring
    보안규칙
    로그 공간
    css
    Media Query
    키 페어
    알고리즘
    내용넘칠때
    미디어쿼리
    K-디지털트레이닝
    Position
    rc-tree
    이차 공간
    선형 시간
    반응형 웹
    카드형 레이아웃
    순수 자바
    메서드
    html
    responsive web
    국비개발
    KDT
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
파스트잇
[🎨CSS] 반응형 웹 시작하기 — viewport, 미디어쿼리, flex-wrap까지
상단으로

티스토리툴바