AMP

カバーページの作成

ウェブストーリーでは、<amp-story-page> コンポーネントを使用してページを表します。amp-story には 1 つ以上の <amp-story-page> コンポーネントページを含めることができ、1 つのストーリーを構成するスクリーンが含まれます。ウェブストーリーに表示される最初のページは、ドキュメントの順序で最初に指定したページです。

ページを作成するには、amp-story の子要素として <amp-story-page>追加します。ページには固有の ID を割り当てます。ここでは、最初のページ(カバーページ)に、固有の ID cover を割り当てます。

<amp-story
  standalone
  title="Joy of Pets"
  publisher="AMP tutorials"
  publisher-logo-src="assets/AMP-Brand-White-Icon.svg"
  poster-portrait-src="assets/cover.jpg"
>
  <amp-story-page id="cover"> </amp-story-page>
</amp-story>

これでカバーページのシェルができました。しかし、このままではストーリーとして有効ではありません。ページ内に 1 つ以上のレイヤーを指定する必要があります。

ページ内のレイヤー

AMP ストーリーページのレイヤーも、グラフィックスのレイヤーのように視覚効果を生み出すために使用できます。たとえば 2 つのレイヤーを重ねることで、1 つ目のレイヤーを最下層とし、その上に次のレイヤーを表示できます。

ここで作成するカバーページは、次の 2 つのレイヤーで構成します。

  • レイヤー 1: 背景として表示する画像
  • レイヤー 2: ストーリーのタイトルとバイライン

レイヤー 1 を作成する

ではまず、カバーページに 1 番目のレイヤーを追加します。このレイヤーには、画面全体に表示する画像を含めます。

レイヤーを作成するには、<amp-story-page> の子要素として <amp-story-grid-layer> を追加します。画像を画面全体に表示したいので、amp-story-grid-layertemplate="fill" 属性を指定します。レイヤー内には、amp-img 要素を追加して cover.jpg ファイルを指定します。画像のサイズは 720 x 1280 ピクセルとし、レスポンシブにするため layout="responsive"と指定します。このレイヤーは次のようになります。

<amp-story-page id="cover">
  <amp-story-grid-layer template="fill">
    <amp-img
      src="assets/cover.jpg"
      width="720"
      height="1280"
      layout="responsive"
    >
    </amp-img>
  </amp-story-grid-layer>
</amp-story-page>

ページがどのように表示されるか見てみましょう。ブラウザで http://localhost:8000/pets.html にアクセスしてください。

次のように表示されるはずです。

レイヤー 2 を作成する

これで背景ができました。次は、背景の上に見出しとバイラインを表示するため、背景レイヤーの上に重ねる 2 番目のレイヤーを作成します。2 番目のレイヤーは、1 番目のレイヤーとほぼ同じ手順で作成できます(fill テンプレートの代わりに vertical テンプレートを使用します)。しかし、その前にさまざまなテンプレートの違いを紹介し、<amp-story-grid-layer> 内に AMP 要素や HTML 要素を配置する方法について説明します。

テンプレートを使って要素を配置する

<amp-story-grid-layer> 要素には、その子要素がグリッド状に配置されます(ベースになっているのは CSS グリッドです)。子要素の配置方法を指定するには、以下に紹介するレイアウト テンプレートのいずれか 1 つを指定する必要があります。

テンプレート: Fill
fill テンプレートは、レイヤー内の 1 番目の子要素を画面全体に表示します。レイヤー内のそれ以外の子要素は表示されません。

fill テンプレートは、画像や動画を背景として表示したい場合に適しています。

<amp-story-grid-layer template="fill">   <amp-img src="dog.png" width="720" height="1280" layout="responsive">   </amp-img> </amp-story-grid-layer>
テンプレート: Vertical
Vertical テンプレートは、子要素を Y 軸に沿って配置します。要素は画面の上部に整列され、X 軸に沿って画面全体を占有します。このテンプレートは、縦方向に要素を重ね合わせる際にうまく機能します。
<amp-story-grid-layer template="vertical">   <p>element 1</p>   <p>element 2</p>   <p>element 3</p> </amp-story-grid-layer>
テンプレート: Horizontal
horizontal テンプレートは、子要素を x 軸に沿って配置します。つまり、要素は画面の左端から順番に並べられ、y 軸方向に画面の右端まで表示されます。

horizontal テンプレートは、要素を水平に隣接するように、順番に並べて表示したい場合に適しています。

<amp-story-grid-layer template="horizontal">   <p>要素 1</p>   <p>要素 2</p>   <p>要素 3</p> </amp-story-grid-layer>
テンプレート: Thirds
Thirds テンプレートは、画面を均等に 3 つの行区画に分割し、各区画にコンテンツを挿入できるようにします。また、名前付きの grid-area を指定することで、コンテンツを示す区画を示すことができます。区画は、upper-thirdmiddle-third、または lower-third として指定します。名前付きグリッド領域は要素が表示する場所の動作を変更する際に役立ちます。たとえば、レイヤーに 2 つの要素がある場合、最初の要素を grid-area="upper-third" 、2 番目の要素を grid-area="lower-third" に表示するように指定します。
<amp-story-grid-layer template="thirds">   <h1 grid-area="upper-third">要素 1</h1>   <p grid-area="lower-third">要素 2</p> </amp-story-grid-layer> 

カバーページを完成させる

レイヤーテンプレートについて理解できたら、2 番目のレイヤーを追加してカバーページを完成させましょう。

レイヤー 2 の見出しとバイラインを前面に表示し、それに続いて要素が次々と表示されるようにしたいので、ここでは vertical テンプレートを指定します。2 番目のレイヤー amp-story-grid-layer は次のようになります(1 番目のレイヤーの後に記述します)。

<amp-story-grid-layer>
  <!--our first layer -->
</amp-story-grid-layer>
<amp-story-grid-layer template="vertical">
  <h1>The Joy of Pets</h1>
  <p>By AMP Tutorials</p>
</amp-story-grid-layer>

ブラウザの表示を更新して確認してみましょう。これでカバーページは完成です。