AMP에서 Placeholder 및 Fallback 사용

3 min read

사용자 경험을 개선하려면 상황에 따라 적절하게 자리 표시자 및 대체 요소를 사용해야 합니다. Placeholder는 해당 요소가 렌더링 될 준비가 될 때까지 요소를 대신하여 표시되는 반면, 요소가 브라우저에서 지원되지 않는 경우 fallback가 요소를 대신하여 표시됩니다.

Placeholder

Placeholder 속성이 있는 요소는 상위 항목에 대한 자리 표시자 역할을 합니다. 요소가 다운로드되거나 초기화되기 전에 요소가 표시될 자리에 즉시 표시됩니다. 실제로 요소가 준비가 완료되면 자리 표시자는 숨겨지고 콘텐츠가 표시됩니다. 따라서 로딩 속도가 느린 요소를 대체하여 사용할 수 있습니다.

예를 들어 동영상이나 고해상도 이미지 대신에 빠르게 로드되는 저해상도 이미지를 표시하는 데 이 기능을 사용할 수 있습니다. 후자는 Medium 및 Facebook과 같은 사이트에서 빠른 페이지 로딩을 제공하는 데 사용하는 것과 동일한 방법입니다. 실제로 배너 이미지 크기로 확대된 작은 저해상도 이미지를 보여줍니다. 사용자는 페이지가 로드 되기 전에 흐릿한 이미지로 거의 즉시 페이지의 레이아웃을 보게 됩니다. 고해상도 버전의 이미지가 준비되면 블러 처리된 흐릿한 버전의 저해상도 이미지는 교체됩니다.

이러한 이미지를 구현하려면 먼저 placeholder 버전의 작은 저해상도 이미지를 준비합니다. Placeholder 이미지는 크기가 약 200~300byte로 줄어들어야 합니다. 이것은 느린 인터넷 환경(3G)에서도 빠르게 로드됩니다.

이제 AMP-HTML을 작성해야 합니다. 요소를 자리 표시자로 설정하려면 placeholder 속성을 추가하기만 하면 됩니다. 이미지에 대한 자리 표시자를 추가하려면 다음과 같이 코드를 작성할 수 있습니다. (전체 코드는 여기를 참조.)

<amp-img src="img/feature.jpg"
         scrset="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"
         noloading>
  <amp-img placeholder
           src="img/feature-tiny.jpg"
           width="768"
           height="305"
           layout="reponsive">
  </amp-img>
</amp-img>

우리는 amp-img 이미지에 자리 표시자를 사용하고 있습니다! 그러나 일반적으로 동영상 또는 기타 크기가 큰 요소에 자리 표시자를 사용합니다.

또한 amp-img 이미지 요소에 noloading 속성을 추가했습니다. AMP는 amp-img와 같은 구성 요소에 대해 기본적으로 로딩 중임을 표시합니다. noloading 속성을 추가하면 이 로딩 표시가 숨겨집니다. 자리 표시자를 사용하기 때문에 로딩 표시가 필요하지 않으므로 비활성화합니다.

개발자 도구에서 자리 표시자가 느린 인터넷 환경(3G)에 대해 잘 작동하는지 확인할 수 있습니다.

위 이미지와 같이 Chrome의 DevTools에서 느린 3G 네트워크를 시뮬레이션 할 수 있습니다. 자리 표시자 이미지 feature-tiny.jpg가 로드되고 곧이어 feature-lrg.jpg 이미지로 대체되는 것을 볼 수 있습니다.


Fallback

Fallback 속성은 부모 요소가 브라우저에서 지원되지 않는 경우, 부모 요소 대신 다른 요소를 사용해야 함을 나타내는 데 사용됩니다. 나중에 amp-video 구성 요소에 대해 더 자세히 다루겠지만, 예를 들어 다음과 같이 HTML5 video 태그를 지원하지 않는다는 대체 메시지를 추가할 수 있습니다.

<amp-video width="640" height="380" src="cats.mp4">
  <div fallback>
    <p>HTML5 video 태그는 지원되지 않습니다.</p>
  </div>
</amp-video>
방문해주셔서 감사합니다. 즐거운 하루 되세요!

관심 있을 만한 글

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

댓글 쓰기