srcset과 sizes를 사용한 반응형 이미지
화면 밀도에 맞는 크기의 이미지를 제공합니다.
srcset과 sizes를 사용한 반응형 이미지은(는) CoddyKit의 무료 HTML Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 HTML Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
단일 이미지의 문제
모든 기기에 하나의 큰 이미지를 제공하면 작은 화면에서 대역폭이 낭비됩니다.
- 화면 너비가 390px인 휴대전화에는 2400px 이미지가 필요하지 않습니다
- 4K 모니터에는 96dpi 이미지보다 더 높은 해상도의 이미지가 적합합니다
- 반응형 이미지는 적합한 화면에 적합한 이미지를 제공합니다
srcset 특성
srcset은 너비 정보가 포함된 이미지 소스 목록을 제공합니다.
<img
src="photo-800.jpg"
srcset="
photo-400.jpg 400w,
photo-800.jpg 800w,
photo-1600.jpg 1600w
"
alt="Mountain landscape"
>
<!-- 400w, 800w, 1600w = intrinsic widths of each file -->
<!-- Browser chooses the best match for the device -->
<!-- src is the fallback for browsers that don't support srcset -->픽셀 밀도 설명자
크기가 고정된 이미지의 해상도가 여러 가지일 때 1x, 2x, 3x 설명자를 사용합니다.
<img
src="logo.png"
srcset="logo.png 1x, logo@2x.png 2x, logo@3x.png 3x"
alt="Coddy logo"
width="120"
height="40"
>
<!-- 2x screens (Retina) get logo@2x.png -->
<!-- 3x screens (iPhone Pro) get logo@3x.png -->
<!-- 1x screens get logo.png -->sizes 특성
sizes는 다양한 뷰포트 크기에서 이미지가 표시될 너비를 브라우저에 알려 줍니다.
<img
src="photo-800.jpg"
srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
sizes="(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
800px"
alt="Landscape photo"
>
<!-- At ≤600px viewport: image takes 100% of viewport width -->
<!-- At ≤1200px viewport: image takes 50% -->
<!-- Otherwise: image is 800px wide -->브라우저가 이미지를 선택하는 방법
브라우저는 sizes 값 × 기기 픽셀 비율을 계산해 srcset에서 선택합니다.
- 600px 뷰포트, 2× DPR, size=100vw → 1200px 이미지 필요 → 1600w 선택
- 1200px 뷰포트, 1× DPR, size=50vw → 600px 이미지 필요 → 800w 선택
- 한 번 로드되면 브라우저가 캐시하므로 다시 로드하지 않을 수 있습니다
기본 sizes 값
sizes가 없으면 브라우저는 이미지가 뷰포트 전체 너비(100vw)를 차지한다고 가정합니다.
<!-- Without sizes: browser assumes 100vw -->
<!-- This causes it to download a very large image on wide screens -->
<!-- Always specify sizes if your image is not full-width -->
<img
srcset="hero-800.jpg 800w, hero-1600.jpg 1600w"
sizes="100vw" <!-- explicit full-width -->
src="hero-1600.jpg"
alt="Hero image"
>srcset 너비 설명자와 x 설명자
srcset에는 두 가지 모드가 있습니다.
- 너비 설명자(w) —
sizes와 함께 사용하며, 유동적이고 레이아웃을 고려해 선택함 - 픽셀 밀도 설명자(x) — 여러 해상도의 고정 크기 이미지에 사용함
대부분의 반응형 이미지에는 w 설명자를 사용하세요. 아이콘, 로고, 고정 크기 요소에는 x를 사용하세요.
srcset 파일 생성하기
반응형 이미지 변형을 생성하는 도구:
- Sharp (Node.js) — 프로그래밍 방식의 이미지 크기 조정
- Squoosh — 브라우저 기반 시각적 비교
- Cloudinary / Imgix — 필요할 때 URL 기반으로 크기 조정
- Webpack / Vite 플러그인 — 빌드 시 생성
WebP 및 대체 형식과 함께 사용하는 srcset
형식 대체를 위해 srcset을 <picture>와 함께 사용합니다.
<picture>
<!-- Modern browsers: WebP -->
<source
type="image/webp"
srcset="photo-400.webp 400w, photo-800.webp 800w"
sizes="(max-width: 600px) 100vw, 50vw"
>
<!-- Fallback: JPEG -->
<img
srcset="photo-400.jpg 400w, photo-800.jpg 800w"
sizes="(max-width: 600px) 100vw, 50vw"
src="photo-800.jpg"
alt="Mountain photo"
>
</picture>아트 디렉션과 해상도 전환
반응형 이미지 문제에는 두 가지 유형이 있습니다.
- 해상도 전환 — 같은 이미지의 해상도만 다름 →
srcset+sizes사용 - 아트 디렉션 — 화면에 따라 자르기나 구성이 다름 →
<source media>와 함께<picture>사용
반응형 이미지 테스트
srcset이 제대로 작동하는지 확인하는 방법:
- DevTools → 네트워크 탭 → 이미지로 필터링
- 기기 에뮬레이션을 설정해 다양한 뷰포트 크기와 DPR을 사용합니다
- 다시 로드하고 브라우저가 어떤 파일을 요청하는지 확인합니다
- 다음 항목도 확인합니다: Lighthouse → 성능 → 적절한 크기의 이미지 검사
srcset 브라우저 지원
srcset의 브라우저 지원은 매우 우수합니다.
- 모든 최신 브라우저(Chrome, Firefox, Safari, Edge)에서 지원됩니다
src대체 항목이 오래된 브라우저를 처리합니다- 실제 서비스에 사용할 때 폴리필이 필요하지 않습니다
확인 문제
sizes 특성은 이미지가 얼마나 넓게 표시될지 브라우저에 알려 줍니다.
복습: srcset과 sizes
반응형 이미지의 핵심:
srcset— 이미지 파일과 각 이미지의 고유 너비 또는 픽셀 밀도 목록sizes— 이미지가 표시될 너비를 설명하는 미디어 조건- 브라우저가 최적의 항목을 선택합니다: sizes 값 × 기기 DPR
- 유동적인 이미지에는 너비 설명자(
w)를, 고정 크기 요소에는x를 사용합니다 - 항상 대체 항목으로
src를 제공합니다
자주 묻는 질문
“srcset과 sizes를 사용한 반응형 이미지” 강의는 무료인가요?
네 — “srcset과 sizes를 사용한 반응형 이미지” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 HTML Academy 강의 전체를 잠금 해제할 수 있습니다. HTML Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“srcset과 sizes를 사용한 반응형 이미지”에서 뭘 배우나요?
화면 밀도에 맞는 크기의 이미지를 제공합니다. 브라우저에서 직접 실행하는 실습 코드로 HTML Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
HTML Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 HTML Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“srcset과 sizes를 사용한 반응형 이미지” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 HTML Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 HTML Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- img 요소: src, alt, width, height
- srcset과 sizes를 사용한 반응형 이미지
- 아트 디렉션을 위한 picture 요소
- figure와 figcaption