amp-img 반응형 이미지 만들기 - srcset 속성

2 min read

sreset을 사용하면 뷰포트 너비마다 각각의 이미지를 지정할 수 있습니다. 그런 다음 브라우저는 뷰포트 너비만 한 이미지를 선택하여 사용자의 장치에 가장 적합한 이미지를 제공합니다.

<amp-img src="img/feature.jpg"
         srcset="img/feature-1200.jpg 1200w,
                 img/feature-lrg.jpg 1080w,
                 img/feature-med.jpg 768w,
                 img/feature.jpg 320w"
         width="768"
         height="305"
         layout="responsive"
         alt="Feature image">
</amp-img>

rcset 속성은 대체 이미지를 쉼표로 구분하여 각각의 너비를 적용합니다. 예를 들어 앞의 코드에서 feature-lrg.jpg는 파일 이름이고 1080w는 이 이미지의 너비가 1080 픽셀임을 브라우저에 알립니다. 페이지를 데스크톱 브라우저에서 로드하고 개발자 도구의 네트워크 탭을 확인합니다.

브라우저 뷰포트의 너비에 따라 실제로 다운로드된 이미지가 표시되어야 합니다. 브라우저 크기를 조정하면 뷰포트 너비에 따라 대체 이미지를 표시하는 것을 볼 수 있습니다.

지금 표시되는 이미지 뿐만 아니라 다른 sreset 이미지에도 layout="responsive"가 적용되고 있습니다. 즉, 브라우저에서 어떤 이미지를 선택하든지 AMP는 이미지의 크기를 조정하여 뷰포트를 채웁니다. 따라서 모든 뷰포트에서 적절한 크기의 이미지를 표시할 수 있습니다.


heightssizes 속성을 사용하면 반응형 이미지를 조금 더 조정할 수 있습니다. sizes 속성을 사용하면 미디어 쿼리를 사용하여 사용자의 뷰포트 크기에 따라 이미지가 표시되어야 하는 범위를 설정할 수 있습니다. 예를 들어 다음과 같이 사용합니다.

sizes="(min-width: 640px) 50vw, 100vw"

즉, 화면 크기가 640px 이상인 경우 이미지는 뷰포트 너비의 50%입니다. 640px 미만의 다른 화면 크기의 경우 뷰포트 너비의 100%로 이미지를 표시합니다.

heights 속성은 비슷하지만 너비 대신 이미지 높이에 적용됩니다. 예를 들면 다음과 같습니다.

heights="(min-width: 500px) 200px, 80%"

sizes 또는 heights 속성을 사용하여 너비와 높이를 함께 지정하면 layout 속성은 기본적으로 responsive으로 설정됩니다.

방문해주셔서 감사합니다. 즐거운 하루 되세요!

관심 있을 만한 글

  • AMP 프로젝트 팀은 성과을 달성하기 위해 분산된 개방형 웹에 제대로 호환이 되지 않으며 자신들의 측면만 생각한 설계 결정을 내렸습니다. 이 중 가장 논란이 되는 부분은 다음과 같습니다. AMP 캐시는 Google이 소유하고 관리 AMP 페이지는 Google이 제…
  • AMP는 페이지의 요소를 표시하는 방법으로 layout 속성을 제공합니다. layout 속성이 없으면 개발자가 빌드하는 데 복잡한 CSS가 필요합니다. 특히 AMP의 75KB CSS 제한을 고려한다면 layout 속성은 매우 유용하며 편리합니다. Layout 속성은…
  • HTML에서와 마찬가지로 CSS는 AMP에서 레이아웃 및 디자인의 핵심입니다. AMP 페이지의 사용자 지정 CSS 스타일을 추가하는 경우 일부 작업에 대한 제한 사항이 있습니다. 다음과 같은 사항을 주의해야 합니다. 모든 스타일은 문서의 head에 정의되어야 합니다. 최대 75KB의 CSS가 허용…
  • Responsive은 layout 속성에서 제공하는 가장 유용한 속성 중 하나입니다. Responsive 레이아웃을 사용하는 경우 width 및 height 속성을 지정해야 합니다. <amp-img src="sample.jpg" width="1280" height…
  • 왜 모든 AMP 페이지에 <style amp-boilerplate> 코드를 포함해야 하는지에 대해 궁금할 수 있습니다. 이것은 AMP 페이지가 로드되는 동안 스타일이 정해지지 않은 콘텐츠가 페이지에 미치는 악영향을 방지하기 위해 AMP 프로젝트 팀이 개발한 방법으로 페이지 렌더링에 꼭 필요한…
  • Pre-rendering은 사용자가 방문을 결정하기도 전에 이미 숨겨진 iframe을 사용하여 백그라운드에서 AMP를 다운로드하고 렌더링 하는 방식입니다. 가능하면 AMP는 백그라운드에서 사전에 미리 로드됩니다. Pre-rendering은 AMP 캐시에서 페이지 로드 시간을 향상시키는데 사용됩니다. …

댓글 쓰기