레슨 6 / 9·20분
반응형 웹 디자인
반응형 디자인이란?
반응형 웹 디자인은 화면 크기에 따라 레이아웃과 스타일이 자동으로 조정되는 설계 방식입니다. 스마트폰, 태블릿, 데스크톱 등 다양한 기기에서 최적의 사용자 경험을 제공합니다. 핵심 도구는 미디어 쿼리(Media Query)와 유연한 단위(%, vw, rem)입니다.
뷰포트 메타 태그
html
<!-- 반응형 디자인의 필수 설정 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--
width=device-width: 뷰포트 너비를 기기 화면 너비에 맞춤
initial-scale=1.0: 초기 줌 레벨을 100%로 설정
이 태그가 없으면 모바일에서 데스크톱 레이아웃이 축소되어 보입니다
-->미디어 쿼리
css
/* 기본 스타일: 모바일 우선 (Mobile First) */
.container {
padding: 16px;
}
.nav-menu {
display: none; /* 모바일에서는 숨김 */
}
.card-grid {
display: grid;
grid-template-columns: 1fr; /* 1열 */
gap: 16px;
}
/* 태블릿 (768px 이상) */
@media (min-width: 768px) {
.container {
padding: 24px;
max-width: 768px;
margin: 0 auto;
}
.nav-menu {
display: flex; /* 메뉴 표시 */
}
.card-grid {
grid-template-columns: repeat(2, 1fr); /* 2열 */
}
}
/* 데스크톱 (1024px 이상) */
@media (min-width: 1024px) {
.container {
max-width: 1200px;
padding: 32px;
}
.card-grid {
grid-template-columns: repeat(3, 1fr); /* 3열 */
gap: 24px;
}
}
/* 대형 화면 (1440px 이상) */
@media (min-width: 1440px) {
.card-grid {
grid-template-columns: repeat(4, 1fr); /* 4열 */
}
}유연한 단위
css
/* ── rem: 루트 폰트 크기 기준 ── */
html {
font-size: 16px; /* 1rem = 16px */
}
h1 { font-size: 2rem; } /* 32px */
h2 { font-size: 1.5rem; } /* 24px */
p { font-size: 1rem; } /* 16px */
/* ── vw/vh: 뷰포트 기준 ── */
.hero {
height: 100vh; /* 화면 전체 높이 */
font-size: clamp(1.5rem, 4vw, 3rem); /* 반응형 폰트 */
}
/* ── %: 부모 기준 ── */
.sidebar {
width: 30%;
}
.content {
width: 70%;
}
/* ── clamp(): 최소, 선호, 최대값 ── */
.container {
/* 최소 320px, 선호 90%, 최대 1200px */
width: clamp(320px, 90%, 1200px);
margin: 0 auto;
}
/* 반응형 폰트 크기: 미디어 쿼리 없이도 가능 */
h1 {
font-size: clamp(1.5rem, 2.5vw + 1rem, 3rem);
}반응형 이미지
css
/* 기본: 이미지가 컨테이너를 넘지 않도록 */
img {
max-width: 100%;
height: auto;
}
/* 비율 유지하며 영역 채우기 */
.cover-image {
width: 100%;
height: 300px;
object-fit: cover; /* 비율 유지, 잘림 허용 */
object-position: center; /* 잘릴 때 중심 기준 */
}💡
Mobile First 접근법은 min-width 미디어 쿼리를 사용하여 작은 화면부터 스타일을 작성하고 점점 큰 화면으로 확장합니다. 모바일 사용자가 불필요한 CSS를 로드하지 않아 성능에 유리하고, 핵심 콘텐츠에 먼저 집중하게 되어 더 나은 설계로 이어집니다.