01 / 15
SESSION 24 · Part 5 웹 개발

반응형 웹 —
모든 화면에 맞추다

미디어 쿼리와 모바일 퍼스트로 유연하게

02 / 15
🎯

이 세션에서
배우는 것

📐
미디어 쿼리
화면 크기별로 다른 스타일을 적용하는 문법을 익힌다
📱
모바일 퍼스트
작은 화면부터 설계하는 방식의 이점을 설명한다
🎨
Tailwind CSS
유틸리티 프레임워크로 반응형을 빠르게 만든다
03 / 15
💭

반응형
필요한가?

사람들은 폰, 태블릿, 노트북, TV로 같은 웹을 본다.
한 벌의 코드로 모든 기기를 지원하지 않으면, 사용자는 떠난다.

오늘날 모바일 트래픽은 전체의 절반 이상.
반응형은 선택이 아닌 기본이다.

04 / 15

주요 브레이크포인트

업계 관행상 자주 쓰이는 화면 크기 기준점.

📱
< 640px
Mobile
폰 세로
📱
640 ~ 768
Small
큰 폰
📲
768 ~ 1024
Tablet
태블릿
💻
> 1024px
Desktop
노트북/PC
/* 기본: 모바일 스타일 */
.container { padding: 1rem; }

/* 태블릿 이상 */
@media (min-width: 768px) {
  .container { padding: 2rem; }
}

/* 데스크탑 이상 */
@media (min-width: 1024px) {
  .container { padding: 3rem; max-width: 1200px; }
}
05 / 15
📐

미디어 쿼리 —
더 깊게 이해하기

min-width와 max-width의 차이를 알면 반응형 CSS가 훨씬 명확해진다.

1
min-width — 이 크기 이상에서 적용
@media (min-width: 768px): 768px부터 더 큰 화면에 적용. 모바일 퍼스트에 사용.
2
max-width — 이 크기 이하에서 적용
@media (max-width: 767px): 767px 이하 화면에만 적용. 데스크탑 퍼스트에 사용.
3
범위 조합 — 특정 구간만 선택
@media (min-width: 768px) and (max-width: 1023px): 태블릿 전용 스타일 지정 가능.
4
기타 조건 — 해상도, 방향
@media (orientation: landscape): 가로 모드에서만, (min-resolution: 2dppx): Retina 화면에만.
06 / 15

모바일 퍼스트 설계

작은 화면을 기본으로 잡고, 큰 화면에서 확장하는 방식.

1
가장 좁은 화면 먼저 설계
세로 폰 레이아웃부터 만든다 — 1열, 간단한 메뉴
2
점진적으로 확장
min-width 쿼리로 큰 화면에서 추가 레이아웃을 붙인다
3
콘텐츠 우선
좁은 화면에서 정말 중요한 것만 남긴다 → 자연스러운 우선순위
4
성능 이점
모바일 기기의 제약을 먼저 고려 → 가볍고 빠른 웹
07 / 15
📱

모바일 퍼스트 —
실제로는 어떻게?

작은 화면에서 출발해 단계적으로 레이아웃을 확장하는 과정을 보자.

📱 기본 스타일
1열 세로 레이아웃
sm: 640px+
여백·글자 확대
md: 768px+
2열 그리드
lg: 1024px+
3열·사이드바

핵심: 모바일은 기본값, 큰 화면은 min-width로 덧붙인다. 코드 충돌 없이 점진 확장.

08 / 15
🎨

Tailwind CSS — 유틸리티 퍼스트

클래스 이름으로 반응형 스타일을 바로 적용.

<!-- 모바일: 세로 / 태블릿 이상: 가로 -->
<div class="flex flex-col md:flex-row gap-4">
  <div class="w-full md:w-1/2">왼쪽</div>
  <div class="w-full md:w-1/2">오른쪽</div>
</div>

<!-- 반응형 글자 크기 -->
<h1 class="text-lg md:text-2xl lg:text-4xl">
  제목
</h1>

sm:, md:, lg:, xl: 접두어로 브레이크포인트별 스타일을 지정한다.

09 / 15
📱

실생활에서
이렇게 쓰여요

우리가 매일 사용하는 앱과 서비스 속에 이 개념이 녹아 있다.

🛒
쿠팡
모바일과 PC에서 동일한 URL, 화면 크기에 따라 상품 그리드가 1→3→4열로 자동 변환
📸
인스타그램
모바일에서 1열 피드, 태블릿 이상에서 3열 그리드로 자동 전환되는 반응형 레이아웃
🔍
네이버
모바일에서 햄버거 메뉴로 숨겨졌던 내비게이션이 PC에서 가로 메뉴로 펼쳐짐

💡 이 개념이 없다면 모바일 사용자에게 PC 화면을 그대로 축소해 보여줄 수밖에 없다.

10 / 15
💡

자주 하는
오해 바로잡기

이렇게 생각하기 쉽지만, 실제로는 조금 다릅니다.

❌ 흔한 오해
  • 반응형 웹 = 모바일 앱
  • 768px이 항상 모바일/태블릿 경계
  • 반응형이면 모든 기기에서 똑같아 보인다
✓ 실제로는
  • 웹사이트가 기기 화면에 맞게 레이아웃을 바꾸는 것 (앱 ≠ 웹)
  • 프로젝트마다 브레이크포인트 기준이 다름
  • 기기마다 레이아웃이 다르게 보이는 것이 정상
11 / 15
💧

반응형은 이다

담기는 그릇에 따라 자연스럽게 모양을 바꾼다.

🫗 물 비유
컵에 담은 물
=
모바일 — 좁고 세로로 긴 모양
접시 위 물
=
태블릿 — 중간 폭, 넓게 퍼짐
수영장 물
=
데스크탑 — 넓고 여유롭게
물의 성질
=
콘텐츠 — 그릇에 맞춰 형태를 바꾼다
12 / 15
🤖

이걸 알면
AI와 이렇게 대화해요

이 개념을 이해하면 Claude나 ChatGPT를 훨씬 잘 활용할 수 있다.

👤
모바일에서 메뉴가 깨져 보여요.
🤖
어떤 화면 크기에서 깨지는지, 현재 CSS를 공유해주시면 확인해드릴게요.
👤
CSS media query로 768px 이하에서 가로 메뉴를 세로로 바꾸는 코드 작성해줘.
🤖
@media (max-width: 767px) { .nav { flex-direction: column; } } — 이 코드를 현재 CSS에 추가하면 됩니다. nav 클래스가 다르면 알려주세요!
13 / 15

이렇게
이해하셨나요?

맞게 이해하셨어요
미디어 쿼리는 화면 크기에 따라 다른 CSS를 적용한다
이렇게는 아니에요
반응형 웹과 모바일 앱은 같은 것이다
맞게 이해하셨어요
모바일 퍼스트는 작은 화면 스타일을 기본값으로 두고 min-width로 확장한다
이렇게는 아니에요
브레이크포인트 768px은 모든 프로젝트에서 동일한 기준이다

💪 반응형의 핵심은 규칙이 아닌 유연함 — 물처럼 흐르는 레이아웃을 만들어보세요!

14 / 15
📌

핵심 정리

📐
미디어 쿼리
@media (min-width: X)
조건부 스타일
🔖
브레이크포인트
640 / 768 / 1024
3단계 기준
📱
모바일 퍼스트
작은 화면 → 큰 화면
점진적 확장
📏
viewport
<meta> 태그로
모바일 렌더링 설정
🎨
Tailwind
md:/lg: 접두어로
즉시 반응형
💧
유연성
고정 px보다
상대 단위 선호
15 / 15
🚀

다음 세션
Session 25 · React 기초

반복되는 UI를 체계적으로 관리하는 법 —
React, Vue, Svelte 프런트엔드 프레임워크의 세계로 들어간다.

💡 기억할 것: 한 벌의 코드로 모든 화면을 지원한다.

슬라이드 목록