사용방법
💁♀️ 예시
<img
src="images/large.png"
srcset="images/small.png 400w,
images/medium.png 700w,
images/large.png 1000w"
alt="" />
위 예제의 결과로,
뷰포트 너비가 400px 이하일 때 small.png(400px)가 사용된다.
뷰포트 너비가 401~700px 일 때 medium.png(700px)가 사용된다.
뷰포트 너비가 701px 이상일 때 large.png(1000px)가 사용된다.
💁♀️ 예시
<img
src="images/large.png"
srcset="images/small.png 1x,
images/medium.png 1.75x,
images/large.png 2.5x"
alt="" />
sizes="(min-width: 1001px) 1000px"
에서 (min-width: 1001px)
은 ‘뷰포트 너비(가로)가 1001px 이상일 때’를 의미하며, 그 뒤 1000px
은 이미지를 ‘1000px로 최적화 출력하겠다’를 의미한다.💁♀️ 예시
<img
src="images/large.png"
srcset="images/small.png 400w,
images/medium.png 700w,
images/large.png 1000w"
sizes="(min-width: 1001px) 1000px,
(min-width: 701px) 700px,
400px"
alt="" />
위 예제의 결과로,
뷰포트 너비가 1001px 이상일 때 large.png가 사용되며 이미지 크기는 1000px로 보여진다.
뷰포트 너비가 701px 이상일 때 medium.png가 사용되며 이미지 크기는 700px로 보여진다.
뷰포트 너비가 700px 이하일 때 small.png가 사용되며 이미지 크기는 400px 보여진다.
width
속성은 이미지의 ‘출력 크기’만 지정하지만, sizes
속성은 이미지의 ‘출력 크기’ + ‘최적 크기’도 함께 지정한다.💁♀️ 예시
<img
src="images/large.png"
srcset="images/small.png 400w,
images/medium.png 700w,
images/large.png 1000w"
sizes="600px"
alt="" />
위 예제의 결과로,
뷰포트 너비와 상관없이 medium.png만 사용된다. 또한 이미지 크기는 600px을 가진다.(원래는 700px 크기의 이미지)
<img
src="images/large.png"
srcset="images/small.png 400w,
images/medium.png 700w,
images/large.png 1000w"
width="400"
alt="" />
위 예제의 결과로,
뷰포트 너비가 400px 이하일 때 small.png가 사용된다.
뷰포트 너비가 401~700px 일 때 medium.png가 사용된다.
뷰포트 너비가 701px 이상일 때 large.png가 사용된다.
뷰포트 너비에 따라 사용되는 이미지가 달라지지만 이미지 크기는 400px로 고정된다.
브라우저가 큰 이미지를 한 번 불러왔으면, 오히려 해상도가 떨어지는 작은 이미지를 또 불러올 필요를 느끼지 못해 뷰포트 크기가 변경되어도 이미지 갱신이 일어나지 않는다.
https://heropy.blog/2019/06/16/html-img-srcset-and-sizes/
https://velog.io/@fenjo/HTML-%EB%B0%98%EC%9D%91%ED%98%95-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-%EC%9C%84%ED%95%9C-srcset