AMP 탭 콘텐츠 만들기 amp-selector

3 min read

탭 콘텐츠는 페이지 내에서 이동하지 않고 탭을 전환하여 다양한 보기 방식를 제공합니다. 탭으로 구분된 콘텐츠는 amp-selector를 사용하여 구현할 수 있습니다. 사용자가 선택할 수 있는 옵션의 목록을 표시하는 구성 요소입니다.

예를 들면 전자 상거래에서는 제품 개요, 사양 및 리뷰와 같은 다양한 정보를 제공하는 데 사용할 수 있습니다. 뉴스 사이트에서는 탭을 사용하여 가장 많이 읽은 기사 목록과 탭을 눌러 전환할 수 있는 기사 목록을 표시합니다.

다음을 페이지의 head 내에 포함합니다.

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

amp-selector에 탭을 만들기 위해 사용할 수 있는 두 가지 속성이 있습니다.

  • option: 이 속성을 추가하면 하위 요소를 선택 가능하도록 설정할 수 있습니다.
  • selected: 이 속성은 현재 선택되어 있는 요소를 지정합니다. 새로운 요소가 선택되면 선택이 취소됩니다.

이것이 탭을 구현하는 데 필요한 전부입니다. 빌드는 다음과 같이 합니다.

  • 탭 버튼 및 탭의 컨테이너로 amp-selector를 사용합니다.
  • 두 개의 탭 버튼에 각각 div를 사용합니다.
    • div를 선택하여 각 탭에 option 속성을 추가합니다. 그러면 AMP는 선택한 div에 selected 속성을 추가합니다.
  • 두 개의 탭 패널에 각각 div를 사용합니다.
    • 각 탭 패널 div는 selected 속성이 관련 탭 선택 버튼에 적용될 때 CSS에 의해 쉽게 타겟팅 될 수 있습니다.
    • 탭 패널은 형제 요소에 selected 속성이 있는지에 따라 표시되거나 숨겨집니다.

먼저 amp-selector 컨테이너 코드입니다. 탭 패널을 지정하는 데 사용할 CSS 클래스로 tab-container를 추가합니다.

<amp-selector layout="container" class="tab-container" role="tablist">
...
</amp-selector>

다음으로 탭을 추가하겠습니다.

<div class="tab-selector"
     role="tab"
     option="related-content"
     selected>
  <h2>관련 기사</h2>
</div>
<div class="tab-content"
     role="tabpanel">
  관련 기사 콘텐츠...
</div>

<div class="tab-selector"
     role="tab"
     option="most-read">
  <h2>인기 기사</h2>
</div>
<div class="tab-content"role="tabpanel">
  인기 기사 콘텐츠...
</div>

option 속성이 포함되어 있으므로 div를 선택할 수 있습니다. selected 속성을 related-content 탭에 적용했습니다. 이제 선택된 탭이 기본 탭으로 표시됩니다.

여기에 CSS를 추가합니다. amp-selector를 플렉스 컨테이너로 설정합니다.

.tab-container {
  display: flex;
  flex-wrap: wrap;
}

기본적으로 탭 안의 내용은 숨겨집니다. order 속성을 1로 설정합니다.

.tab-content {
  display: none;
  width: 100%;
  order: 1;
}

그런 다음 tab-selector 탭이 선택되면 탭의 내용을 표시합니다.

.tab-selector[selected] +.tab-content {
  display: block;
}

선택한 탭과 선택하지 않은 탭의 스타일을 다르게 지정하여 어떤 탭이 선택되었는지 확인할 수 있습니다.

.tab-selector {
  list-style: none;
  flex-grow: 1;
  cursor: pointer;
  background-color: #ddd;
}

.tab-selector[selected] {
  outline: none;
  background: #fff;
  border-top: 1px solid #ddd;
}

이제 페이지에 이 탭 콘텐츠가 맞도록 레이아웃 스타일을 약간 조정하면 됩니다.

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

관심 있을 만한 글

  • 다음 유효성 검사 오류 메시지는 특별한 주의가 필요합니다. The tag 'img' should be replaced with an equivalent 'amp-img' tag태그 'img'을(를) 동등한 'amp-img' 태그로 교체해야 합니다. 기존의 HTML…
  • AMP 유효성 검사 오류 중에서 CSS 스타일 시트 관련 오류를 해결해 보겠습니다. The attribute 'href' in tag 'link rel=stylesheet for fonts' is set to the invalid value 'style.css'.'…
  • AMP 상용구(boilerplate)와 관련된 오류를 살펴보겠습니다. AMP 상용구와 관련된 오류는 일반적으로 문서의 끝에서 발생하며 일반적으로 다음과 같이 "The manadatory tag ..."라는 텍스트와 함께 표시됩니다: test.html:2:0 The …
  • HTML에 대한 기본적인 지식이 있다고 가정하고 간단한 HTML5 페이지를 AMP-HTML로 변환해보겠습니다. 표준 AMP 페이지, 즉 데스크톱 페이지가 없는 독립형 AMP 페이지를 구축하지 않는 한, 일반적으로 전체 HTML 페이지를 AMP-HTML로 변환합니다. …
  • AMP 유효성 검사 오류 중에서 자바스크립트 관련 오류를 해결해 보겠습니다. Custom JavaScript is not allowed.맞춤 자바스크립트는 허용되지 않습니다. AMP에서는 성능을 보장하기 위해 자바스크립트 사용이 크게 제한됩니다. 스크립트 태그…
  • 유효성 검사는 AMP 페이지에 문제가 있을 때 알려주며, 페이지의 어느 부분에서 문제가 발생했는지 알 수 있기 때문에 매우 유용합니다. AMP 페이지의 유효성을 검사하지 않으면 AMP 캐시에 포함되지 않습니다. 즉, 클릭함과 동시에 즉시 로드되는 페이지를 만들지 못합니다…

댓글 쓰기