구글 AMP – List

4 min read

Amp-list는 CORS json 엔드 포인트를 호출하고 템플릿 내부의 json 파일 형식으로 데이터를 표시하는 amp 구성 요소입니다. 예제의 도움으로 이것을 이해합시다.

amp-list를 사용하려면 다음 스크립트를 포함해야 합니다.

<script async custom-element="amp-list" src="https://cdn.ampproject.org/v0/amp-list-0.1.js"></script>

다음은 amp-list 태그의 형식입니다.

<amp-list width="auto" height="100" layout="fixed-height" src="amplist.json" class="m1">
  <template type="amp-mustache">
    <div class="images_for_display">
      <amp-img width="150"
               height="100"
               alt="{{title}}"
               src="{{url}}">
      </amp-img> 
    </div>
  </template>
</amp-list>

amp-list에 사용되는 src는 나열할 세부 정보가 있는 json 파일입니다. amp-list 내부의 일반 html 태그 또는 amp 구성 요소를 사용하여 json 파일의 데이터를 표시할 수 있습니다. 템플릿 유형 amp-mustache는 표시할 데이터를 데이터 바인딩하는데 사용됩니다.

아래와 같이 실제 예제의 도움으로 이것을 이해합시다.

예제

<!doctype html>
<html ⚡ lang="ko">
<head>
  <meta charset="utf-8">
  <script async src="https://cdn.ampproject.org/v0.js"></script>
  <title>Google AMP - Amp List</title>
  <link rel="canonical" href="https://googleblogamp.blogspot.com/2021/01/google-amp-list.html">
  <meta name="viewport" content="width=device-width,minimum-scale=1">
  <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
  <script async custom-element="amp-list" src="https://cdn.ampproject.org/v0/amp-list-0.1.js"></script>
  <script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.2.js"></script>
  <style amp-custom>
    amp-img {
      border: 1px solid #ddd;
      border-radius: 4px;
      padding: 5px;
    }
  </style>
</head>
<body>
<h3>Google AMP - Amp List</h3>
<amp-list width="auto" height="100" layout="fixed-height" src="amplist.json" class="m1">
  <template type="amp-mustache">
    <div class="images_for_display">
      <amp-img width="150"
               height="100"
               alt="{{title}}"
               src="{{url}}">
      </amp-img> 
    </div>
  </template>
</amp-list>
</body>
</html>

결과

위에 표시된 작업 예제의 결과는 다음과 같습니다.

위의 예제에서 사용된 json 파일은 다음과 같습니다.

amplist.json

{
  "items": [
    {
      "title": "Christmas Image 1",
      "url": "images/christmas1.jpg"
    },
    {
      "title": "Christmas Image 2",
      "url": "images/christmas2.jpg"
    },
    {
      "title": "Christmas Image 3",
      "url": "images/christmas3.jpg"
    },
    { 
      "title": "Christmas Image 4",
      "url": "images/christmas4.jpg"
    }
  ]
}

아래 코드와 같이 amp-list의 이벤트를 사용하여 목록을 새로고침할 수 있습니다.

예제

<!doctype html>
<html ⚡ lang="ko">
<head>
  <meta charset="utf-8">
  <script async src="https://cdn.ampproject.org/v0.js"></script>
  <title>Google AMP - Amp List</title>
  <link rel="canonical" href="https://googleblogamp.blogspot.com/2021/01/google-amp-list.html">
  <meta name="viewport" content="width=device-width,minimum-scale=1">
  <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
  <script async custom-element="amp-list" src="https://cdn.ampproject.org/v0/amp-list-0.1.js"></script>
  <script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.2.js"></script>
  <style amp-custom>
    amp-img {
      border: 1px solid #ddd;
      border-radius: 4px;
      padding: 5px;
    }
    button {
      background-color: #ACAD5C;
      color: white;
      padding: 12px 20px;
      border: none;
      border-radius: 4px;
      cursor: pointer;
      float: right;
    }
  </style>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto">
</head>
<body>
<h3>Google AMP - Amp List</h3>
<button on="tap:amplist.refresh">Refresh Images</button> 
<amp-list id="amplist" width="auto" height="100" layout="fixed-height" src="amplist.json" class="m1">
  <template type="amp-mustache">
    <div class="images_for_display">
      <amp-img width="150"
               height="100"
               alt="{{title}}"
               src="{{url}}">
      </amp-img> 
    </div>
  </template>
</amp-list>
</body>
</html>

위에 제공된 예제의 출력은 다음과 같습니다.

클릭하면 아래와 같이 on 이벤트를 사용하여 새로고침 동작을 호출하는 버튼이 추가되었습니다.

<button on="tap:amplist.refresh">Refresh Images</button>
//amplist is the id used for amp-list

버튼을 클릭하면 json 파일이 다시 호출되고 내용이 로드됩니다. 이미 로드된 이미지가 있는 경우 캐시됩니다.

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

관심 있을 만한 글

  • amp-component에서 액션이나 이벤트를 사용하려면 on 속성을 사용할 수 있습니다. 이 글에서는 이에 대해 자세히 설명하겠습니다. Events 이벤트에 대한 액션 구문은 다음과 같습니다. on="eventName:elementId[.methodName[(arg1=value, arg2=value…
  • Amp-list는 CORS json 엔드 포인트를 호출하고 템플릿 내부의 json 파일 형식으로 데이터를 표시하는 amp 구성 요소입니다. 예제의 도움으로 이것을 이해합시다. amp-list를 사용하려면 다음 스크립트를 포함해야 합니다. <script async custom-element="am…
  • Amp 글꼴은 기본적으로 amp 페이지에 대한 사용자 지정 글꼴을 트리거하고 모니터링하는 데 도움이 되는 amp의 amp 구성 요소입니다. 이 글에서는 amp-font에 대해 자세히 설명합니다. Amp-font를 사용하려면 다음 자바스크립트 파일을 추가해야 합니다. <script async …
  • 구글 amp-user-notification은 사용자에게 닫을 수 있는 대화 상자 메시지를 표시하는데 사용됩니다. 우리는 페이지의 쿠키에 대해 사용자에게 알리는데 사용할 수 있습니다. amp-user-notification을 사용하려면 페이지에 다음 스크립트를 추가해야 합니다. <sc…
  • amp-dynamic-css-classes는 body 태그에 동적 클래스를 추가합니다. 이 글에서는 이 태그에 대해 자세히 알아보겠습니다. amp-dynamic-css-classes로 작업하려면 다음 스크립트를 추가해야 합니다. <script async custom-element="amp-dyn…
  • Amp-animation은 다른 amp 구성 요소에서 사용할 애니메이션을 정의하는 amp 구성 요소입니다. 이 글에서는 이에 대해 자세히 설명합니다. Amp-animation을 사용하려면 다음 스크립트를 추가해야 합니다. <script async custom-element="amp-animati…

댓글 쓰기