Imagens, Áudios e Vídeos no HTML5

Imagens Flexíveis

No Capítulo 06, aprendemos a adicionar imagens no HTML. No entanto, notamos que as imagens não se adaptam ao tamanho da tela como os textos.

Para resolver isso, podemos usar a tag <picture>. Com essa tag, é possível adicionar várias imagens com tamanhos diferentes, que se alternam conforme o tamanho da tela do usuário.

Quando Usar a Tag <picture>

A tag <picture> é especialmente útil nas seguintes situações:

  • Poupar dados e acelerar o carregamento: Em dispositivos com telas pequenas, como smartphones, não há necessidade de carregar imagens grandes e pesadas. Usar a tag <picture> permite carregar versões menores das imagens, economizando dados e acelerando o carregamento da página.
  • Adaptar imagens a diferentes resoluções: Em telas de alta resolução, como monitores Retina, é importante fornecer imagens de maior qualidade para evitar que fiquem pixeladas. A tag <picture> permite definir diferentes versões da imagem para diferentes resoluções, garantindo uma melhor experiência visual.
  • Mostrar imagens específicas para diferentes orientações de tela: Em dispositivos que podem ser usados tanto na orientação vertical quanto horizontal, como tablets, a tag <picture> permite definir imagens diferentes para cada orientação, melhorando a usabilidade e a apresentação do conteúdo.

A tag <picture> permite que você defina várias versões de uma imagem e escolha qual delas será exibida com base no tamanho da tela ou outras condições. Isso é feito usando a tag <source> dentro da tag <picture>. Vamos ver como isso funciona na prática.

Estrutura Básica

A estrutura básica da tag <picture> é a seguinte:

        <picture>
            <source media="(condição)" srcset="caminho/para/imagem">
            <img src="caminho/para/imagem-padrão" alt="Descrição da imagem">
        </picture>
        

Vamos entender cada parte:

  • <picture>: A tag que envolve todas as versões da imagem.
  • <source>: Define uma condição e a imagem a ser exibida se essa condição for verdadeira.
  • media="(condição)": A condição que deve ser atendida para que a imagem seja exibida. Por exemplo, media="(max-width: 750px)" significa que a imagem será exibida se a largura da tela for de até 750 pixels.
  • srcset="caminho/para/imagem": O caminho para a imagem que será exibida se a condição for verdadeira.
  • <img>: A imagem padrão que será exibida se nenhuma das condições definidas nas tags <source> for atendida.

Exemplo

Vamos ver um exemplo prático para entender melhor. Suponha que temos três versões de uma imagem: uma pequena, uma média e uma grande. Queremos que a versão pequena seja exibida em telas de até 750 pixels de largura, a versão média em telas de até 1050 pixels, e a versão grande em telas maiores que 1050 pixels.

        <picture>
            <source media="(max-width: 750px)" srcset="imagens/foto-p.png" type="image/png">
            <source media="(max-width: 1050px)" srcset="imagens/foto-m.png" type="image/png">
            <img src="imagens/foto-g.png" alt="Foto Teste">
        </picture>
        

Com esse código, garantimos que a imagem exibida será a mais adequada para o tamanho da tela do usuário, melhorando a experiência de navegação e otimizando o carregamento do site.

Atributos da Tag <source> media e type

A tag <picture> funciona como uma condicional, onde as tags <source> definem a imagem a ser exibida se a condição especificada for atendida:

  • Teste de largura: Verifica a largura da tela. Por exemplo, media="(max-width: 750px)" testa se a tela tem até 750 pixels de largura. Se for verdadeiro, exibe a imagem configurada em srcset="imagens/foto-p.png". Caso contrário, passa para o próximo teste.
  • Imagem a ser carregada: Indica qual imagem deve ser carregada. Use a tag <img> para obter o caminho da imagem e copie para a tag <source>. Evite nomes de arquivos ou pastas com espaços, acentuação ou letras maiúsculas.
  • Tipo de imagem: Define o tipo da imagem com o atributo type="image/png". Especificar a extensão da imagem é importante para evitar erros.

Veja abaixo o código completo com as duas tags:

<picture>
    <source media="(max-width: 750px)" srcset="imagens/foto-p.png" type="image/png">
    <source media="(max-width: 1050px)" srcset="imagens/foto-m.png" type="image/png">
    <img src="imagens/foto-g.png" alt="Foto Teste">
</picture>
                

A tag <img> será exibida apenas se nenhuma das condições definidas nas tags <source> forem atendidas. Neste exemplo, a imagem será exibida se a largura da tela for superior a 1050 pixels.

Alternativamente, você pode usar o atributo min-width para definir uma condição de largura mínima. Por exemplo, ao usar min-width: 1051px, a imagem será exibida para telas com largura superior a 1050 pixels, obtendo o mesmo efeito.

Exemplo Interativo com <source> e media

Altere a largura do seu navegador para ver a imagem alterar de acordo.

Imagem Responsiva

Tag <figure> e <figcaption>

A tag <figure> é usada para agrupar elementos de mídia, como imagens, com suas respectivas legendas, utilizando a tag <figcaption>.

Exemplo:

Imagem de exemplo
Legenda da imagem com elefante

O código HTML correspondente é:

<figure>
    <img src="imagens/foto-p.png" alt="Imagem de exemplo">
    <figcaption>Legenda da imagem</figcaption>
</figure>
                

Áudios no HTML5

Direitos Autorais de Áudios

Assim como vimos no capítulo 06 sobre direitos autorais de imagens, os áudios também possuem direitos autorais. Uma forma de baixar áudios ou músicas livres de direitos autorais é usando a ferramenta do YouTube. Para acessá-la, vá ao YouTube → Conta → YouTube Studio → Biblioteca de áudios.

Nessa biblioteca, você pode fazer downloads de músicas gratuitamente. No entanto, algumas músicas exigem atribuição, ou seja, é necessário dar crédito ao autor. Para evitar isso, filtre os resultados clicando em Atribuições → Atribuição não necessária.

Adicionando Áudios no HTML

No HTML5, são aceitos três formatos de áudios:

  • MP3: Formato popular, compatível com muitos navegadores e bem compacto.
  • OGG: Menos conhecido, compatível com alguns navegadores e muito compacto.
  • WAV: Muito conhecido, compatível com muitos navegadores, mas muito pesado. Use este formato em último caso.

Tag <audio>:

A tag <audio> permite adicionar áudio ao HTML. Veja abaixo os principais atributos:

  • autoplay: Faz o áudio começar a tocar automaticamente quando a página é carregada. No entanto, isso pode ser irritante para os usuários e muitos navegadores ignoram esse atributo.
  • controls: Exibe os controles básicos de reprodução do áudio (play, pause, volume, etc.). Não esqueça de adicionar este atributo!
  • loop: Faz o áudio repetir continuamente até que o usuário o pause.
  • preload: Define como o navegador deve carregar o áudio:
    • auto: Carrega todo o áudio quando a página é carregada. Não é recomendado, pois pode deixar a página lenta.
    • metadata: Carrega apenas os metadados do áudio (duração, nome, formato). Este é o recomendado.
    • none: Não carrega nada do áudio até que o usuário inicie a reprodução.

Exemplo de uso da tag <audio>:

<audio src="caminho/para/audio.mp3" controls preload="metadata"></audio>
            

Usando Múltiplos Formatos de Áudio

A tag <audio> pode funcionar de forma semelhante à tag <picture>, permitindo que você forneça múltiplos formatos de áudio para evitar incompatibilidades. Se o navegador não suportar o primeiro formato, ele tentará carregar o próximo, e assim por diante. Se nenhum formato for suportado, você pode exibir uma mensagem informando que o áudio não pôde ser carregado e fornecer um link para download.

Exemplo de uso com múltiplos formatos:

<audio preload="metadata" controls>
    <source src="caminho/para/audio.ogg" type="audio/ogg">
    <source src="caminho/para/audio.mp3" type="audio/mpeg">
    <source src="caminho/para/audio.wav" type="audio/wav">
    <p>Infelizmente, não foi possível carregar este áudio. <a href="caminho/para/audio.mp3">Clique aqui</a> para fazer o download.</p>
</audio>
            

Veja um exemplo funcionando abaixo:

Vídeos

Direitos Autorais de Vídeos

Assim como imagens e áudios, vídeos também possuem direitos autorais. Um excelente site para encontrar vídeos livres de direitos autorais é o Pexels, o mesmo que utilizamos para imagens.

Principais Formatos de Vídeos para HTML

Os principais formatos de vídeo aceitos pelos navegadores são:

  • MP4: Formato mais popular, compatível com a maioria dos navegadores e dispositivos.
  • M4V: Similar ao MP4, usado principalmente pela Apple.
  • WebM: Formato aberto e eficiente, suportado por navegadores modernos.
  • OGV: Menos compatível, mas oferece boa compactação e qualidade.

Durante o curso, utilizaremos o editor de vídeos gratuito HandBrake, mas também é possível fazer conversões em sites gratuitos.

Hospedagem de Vídeos no Próprio Site

Os servidores de hospedagem de sites cobram por tráfego de dados. Portanto, hospedar um vídeo pesado no próprio site pode encarecer significativamente o custo do site.

Para adicionar um vídeo no próprio site, o processo é bem similar à adição de áudios.

Tag <video>

A tag <video> permite usar a tag <source> dentro dela, assim como na tag <audio>, para testar todos os formatos do mais leve para o mais pesado.

Também podemos usar o atributo media na tag <source> para definir a resolução do vídeo de acordo com o tamanho da tela, organizando dentro dos formatos. No entanto, não é possível definir um poster para cada resolução. Além disso, se o usuário estiver com o smartphone na vertical e o deitar durante a navegação, a resolução não aumentará, pois será necessário atualizar a página com o smartphone deitado.

Principais Atributos da Tag <video>

  • controls: Exibe os controles de reprodução do vídeo (play, pause, volume, etc.).
  • autoplay: Faz o vídeo começar a reproduzir automaticamente assim que a página é carregada. Use com cautela, pois pode ser irritante para os usuários.
  • loop: Faz o vídeo reiniciar automaticamente quando termina.
  • muted: Inicia o vídeo sem som. Útil quando usado com autoplay para evitar sons inesperados.
  • poster: Define uma imagem a ser exibida antes do vídeo começar a ser reproduzido. Ideal para mostrar uma prévia do conteúdo do vídeo.
  • preload: Indica ao navegador como deve tratar o carregamento do vídeo. Pode ser:
    • auto: Carrega todo o vídeo quando a página é carregada. Pode aumentar o tempo de carregamento da página.
    • metadata: Carrega apenas os metadados do vídeo (como duração, dimensões, etc.).
    • none: Não carrega nada do vídeo até que o usuário inicie a reprodução. Economiza largura de banda.
  • width: Define a largura do vídeo. Pode ser em pixels ou porcentagem.
  • height: Define a altura do vídeo. Pode ser em pixels ou porcentagem.

Sintaxe:

<video controls autoplay loop muted poster="caminho/para/imagem.jpg" preload="auto" width="640" height="360">
    <source src="caminho/para/video.mp4" type="video/mp4">
    <source src="caminho/para/video.webm" type="video/webm">
    Seu navegador não suporta a tag de vídeo.
</video>
            

Exemplo usando <source> com media:

Materiais de apoio

11 - Imagens dinâmicas, áudios e vídeos.pdf