amp-accordion으로 접을 수 있는 메뉴 만들기

3 min read

접을 수 있는 메뉴는 화면 공간이 제한된 모바일 장치에서 사용자 경험을 개선하는 데 도움이 될 수 있습니다. 아코디언 구성 요소는 확장 또는 축소할 수 있는 콘텐츠 목록입니다. 예를 들어, 댓글 섹션을 접거나 내비게이션 메뉴에서 카테고리를 접었다 펴는 것과 같이 다양한 방법으로 웹에서 널리 사용됩니다.

AMP는 아코디언을 만들기 위한 확장 구성 요소로 amp-accordion를 사용합니다.

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

다음으로 몇 가지 콘텐츠 섹션을 추가해 봅시다. AMP에서 section 태그를 사용하려면 다음과 같은 조건이 있습니다.

  • 각 섹션은 amp-accordion의 직계 하위 요소이어야 합니다.
  • 각 섹션에는 정확히 두 개의 하위 항목이 있어야 합니다.
  • 첫 번째 하위 항목은 헤더 태그여야 합니다. (h1, h2, ..., h6 또는 header 중 하나)
  • 두 번째 하위 항목은 유효한 AMP-HTML 태그 및 HTML 태그, 또는 다른 amp-accordion 이어야 합니다.

이 조건을 만족하는 코드가 아래에 있습니다. 어떻게 작동하는지 봅시다.

<amp-accordion>
  <section>
    <h3>Item 1</h3>
    <div>The section content</div>
  </section>
  <section>
    <h3>Item 2</h3>
    <amp-img src="img/penguin.jpg"
             layout="fixed"
             width="125"
             height="75">
    </amp-img>
  </section>
  ...
</amp-accordion>

그러면 다음 이미지에 표시된 것과 같은 아코디언이 생성됩니다.

AMP 아코디언: Item1,2는 확장 Item3은 축소된 모습.

여기에 섹션 및 콘텐츠를 더 추가하면 확장 가능한 카테고리 메뉴를 만들 수 있을 것입니다.

확장 가능한 카테고리 메뉴 만들기

먼저 AMP-HTML을 작성해 보겠습니다. 카테고리에 대한 각각의 section을 추가합니다. 카테고리 제목은 각 섹션의 헤더에 정하고, 내용은 <li>으로 추가합니다.

<amp-accordion>
  <section>
    <h3>news</h3>
    <ul>
      <li>News story 1 content</li>
      <li>News story 2 content</li>
    </ul>
  </section>
  <section>
    <h3>sports</h3>
    <ul>
      <li>Sports story 1 content</li>
      <li>Sports story 2 content</li>
    </ul>
  </section>
</amp-accordion>

amp-accordion의 각 section은 다음과 같습니다.

<section>
  <h3 class="category-title">news</h3>
  <ul>
    <li>
      <figure class="related-thumb">
        <amp-img media="(min-width: 35.01rem)" 
                   src="img/penguin.jpg"
                   ...
        </amp-img>
        <figcaption>News story 1 content</figcaption>
      </figure>
    </li>
    ...

마크 업이 너무 길어서 여기에 표시할 수 없지만 전체 코드는 이 페이지 하단에서 볼 수 있습니다.

amp-accordion 스타일 꾸미기

CSS로 아코디언의 헤더 및 섹션의 스타일을 지정할 수 있습니다. 각각의 섹션을 구분하기 위해 배경색이 없는 회색 상단 테두리를 만들어 보겠습니다.

.category-title {
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 1.5rem;
  color: #005689;
  background: none;
  border: 0;
  border-top: 1px solid #ddd;
  padding: 0.25rem;
}

이렇게 스타일까지 꾸미면 카테고리별로 확장할 수 있는 목록이 완성됩니다.

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

관심 있을 만한 글

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

댓글 쓰기