AMP

Detalhes técnicos para Histórias Web

Important: this documentation is not applicable to your currently selected format websites!

Este guia explica todos os detalhes técnicos e práticas recomendadas que você deve conhecer para ter sucesso ao criar Histórias na Web com o AMP.

AMP válido

Uma História Web é tecnicamente uma única página Web criada com o AMP e que segue as especificações do AMP:

  • Comece com o doctype <!doctype html>.
  • Inclua uma tag top-level <html ⚡> ou <html amp>.
  • Inclua as tags <head> e <body>.
  • Inclua uma tag <meta charset="utf-8"> como primeiro elemento-filho da tag <head>.
  • Inclua uma <script async src="https://cdn.ampproject.org/v0.js"></script> dentro da tag <head>. Como boa prática, você deve incluir o script o mais próximo do início do bloco <head>.
  • Inclua uma tag <link rel="canonical" href="page/url"> dentro de <head> com o href apontando para a URL da História Web.
  • Inclua uma tag <meta name="viewport" content="width=device-width"> dentro de <head>. Também é recomendada a inclusão de initial-scale=1.
  • Inclua o código AMP boilerplate dentro da tag <head>.

A diferença entre uma página Web do AMP e uma História Web criada com o AMP é o componente amp-story. É o único elemento-filho direto do documento <body> e deve conter o atributo standalone. Todas as páginas, camadas e elementos da História Web são definidos nas tags <amp-story>.

<!DOCTYPE html>
<html >
  <head>
    <meta charset="utf-8" />
    <title>Joy of Pets</title>
    <link rel="canonical" href="pets.html" />
    <meta name="viewport" content="width=device-width" />
    <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 src="https://cdn.ampproject.org/v0.js"></script>
    <script
      async
      custom-element="amp-video"
      src="https://cdn.ampproject.org/v0/amp-video-0.1.js"
    ></script>
    <script
      async
      custom-element="amp-story"
      src="https://cdn.ampproject.org/v0/amp-story-1.0.js"
    ></script>
    <style amp-custom>
      ...;
    </style>
  </head>
  <body>
    <!-- Cover page -->
    <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-grid-layer template="fill">
          <amp-img
            src="assets/cover.jpg"
            width="720"
            height="1280"
            layout="responsive"
          >
          </amp-img>
        </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>
      </amp-story-page>

      <!-- Page 1 -->
      <amp-story-page id="page1">
        <amp-story-grid-layer template="vertical">
          <h1>Cats</h1>
          <amp-img
            src="assets/cat.jpg"
            width="720"
            height="1280"
            layout="responsive"
          >
          </amp-img>
          <q
            >Dogs come when they're called. Cats take a message and get back to
            you. --Mary Bly</q
          >
        </amp-story-grid-layer>
      </amp-story-page>
      ...
    </amp-story>
  </body>
</html>

Siga as instruções no tutorial Crie sua primeira História Web e leia a documentação de referência do amp-story para saber mais.

Pico de desempenho e experiência do usuário

Os usuários podem estar visualizando Histórias Web em regiões com conexões de rede de baixa qualidade ou dispositivos mais antigos. Garanta que eles curtam sua experiência seguindo as práticas recomendadas a seguir.

Cor de fundo

Especifique uma cor de fundo para cada página da História Web. Ter uma cor de fundo garante uma boa alternativa se as condições do usuário impedirem o download de imagens ou recursos de vídeo. Escolha uma cor que represente a cor dominante do recurso que seria plano de fundo pretendido da página ou utilize um tema de cores consistente para todas as páginas da história. Certifique-se que a cor do plano de fundo seja contrastante em relação ao texto, para garantir a legibilidade.

Defina a cor de plano de fundo para as páginas usando as tags<style amp-custom> no head do documento da História Web ou inline no componente <amp-story-page> .

Elementos de camadas

O cabeçalho do sistema contém controles tais como os ícones silenciar e compartilhar. Ele é exibido com um z-index maior que a imagem de fundo e vídeo. Certifique-se que nenhuma informação essencial seja coberta por esses ícones.

Proporção

Projete os recursos da História Web na proporção de 9:16. Como altura e largura da página variam entre navegadores e dispositivos, não deixe conteúdo essencial próximo às bordas da página.

Imagens de pôster

Uma imagem de pôster é exibida para o usuário enquanto um vídeo é baixado. A imagem do pôster deve ser representativa do vídeo para permitir uma transição suave. Especifique uma imagem de pôster adicionando o atributo poster ao seu elemento amp-video e faça com que aponte para o endereço da imagem.

<amp-video autoplay loop
  width="720" height="1280" layout="responsive"
  poster="images/kitten-playing.png">
  <source src="videos/kitten-playing.mp4"
    type="video/mp4" />
</amp-video>

Vídeo

Todos os vídeos devem ser adicionados através do componente amp-video.

<amp-video controls
  width="640"
  height="360"
  layout="responsive"
  poster="/static/inline-examples/images/kitten-playing.png">
  <source src="/static/inline-examples/videos/kitten-playing.webm"
    type="video/webm" />
  <source src="/static/inline-examples/videos/kitten-playing.mp4"
    type="video/mp4" />
  <div fallback>
    <p>This browser does not support the video element.</p>
  </div>
</amp-video>

Resolução e qualidade

Codifique os vídeos para ajustar a qualidade das seguintes otimizações recomendadas:

MP4 -crf 23
WEBM -b:v 1M

Tente manter os segmentos HLS com duração inferior a 10 segundos.

Formato e tamanho

Mantenha vídeos menores que 4MB para o melhor desempenho. Considere dividir vídeos grandes em múltiplas páginas.

Se você só puder fornecer um único formato de vídeo, forneça MP4. Quando possível, use o formato HLS e especifique MP4 como reserva para garantir a compatibilidade com o navegador. Use o seguinte codec de vídeo:

MP4, HLS e DASH H.264
WEBM VP9

Especifique em vez de src

Use os elementos-filho <source> dentro do componente <amp-video> para especificar a fonte de vídeo sobre o atributo src. O uso do elemento <source> permite que você indique o tipo de vídeo e adicione fontes de vídeo como backup. Você precisa usar o atributo type para especificar o componente MIME. Use application/x-mpegurl ou application/vnd.apple.mpegurl para vídeos HLS. Para todos os outros tipos de vídeo, use o prefixo MIME video/ e acrescente o formato de vídeo, como por exemplo ”video/mp4”.

<amp-video
  id="video-page1"
  autoplay
  loop
  layout="fill"
  poster="https://example.com/media/poster.jpg"
>
  <source
    src="https://amp-example.com/media/movie.m3u8"
    type="application/vnd.apple.mpegurl"
  />
  <source src="https://amp-example.com/media/movie.mp4" type="video/mp4" />
</amp-video>

Avanço automático depois de um vídeo

O atributo auto-advance-after exposto por amp-story-page especifica se e quando uma página da história deve avançar sem a intervenção do usuário. Para avançar após um vídeo, indique o ID do vídeo no atributo.

<amp-story-page auto-advance-after="myvideo"></amp-story-page>

Experiência desktop

O formato de Histórias Web suporta uma experiência desktop opcional. Isto altera a experiência desktop para um modo imersivo de tela cheia, substituindo a experiência default de três painéis em orientação vertical e permite que os usuários móveis vejam a história quando seus dispositivos são mantidos na posição horizontal.

Ative o suporte a desktop adicionando o atributo supports-landscape ao componente <amp-story>.

<amp-story
  standalone
  supports-landscape
  title="Joy of Pets"
  publisher="AMP tutorials"
  publisher-logo-src="assets/icon.svg"
  poster-portrait-src="assets/cover.jpg"
>
</amp-story>