Formulários, tabelas e mídias em HTML

Crie formulários web que coletem as informações adequadas: escolha tipos de entrada, áreas de texto e listas suspensas, rotule cada controle e saiba o que o navegador envia. Use a validação nativa do navegador para identificar respostas ausentes ou mal formatadas. Apresente dados em tabelas claras e acessíveis, adicione áudio e vídeo com legendas e conteúdo alternativo e incorpore mapas, vídeos e outras páginas com segurança usando iframes.

BásicoAula 3 de 8 do curso Curso de Noções básicas de desenvolvimento web

O que você vai aprender

  1. Crie um formulário, escolha um controle adequado para cada informação, rotule todos os controles e saiba exatamente o que o navegador envia quando o formulário é enviado.
    • Configure um formulário e entenda o que ele envia
      Use o elemento form, nomes e valores, botões de envio e os atributos action e method para controlar quais dados saem da página e para onde vão.
    • Escolha tipos de entrada adequados aos dados
      Escolha o tipo de entrada adequado a cada informação para que os navegadores ofereçam o teclado ou seletor apropriado e verifiquem o formato básico.
    • Use áreas de texto, listas suspensas e outros controles
      Colete textos mais longos, ofereça listas fixas de opções e sugestões de digitação e mostre progresso ou medições com textarea, select, datalist, progress e meter.
    • Rotule cada controle e agrupe os controles relacionados
      Associe rótulos visíveis aos controles, agrupe controles relacionados com fieldset e legend e adicione instruções e indicações de preenchimento automático para que todas as pessoas possam preencher o formulário.
  2. Use atributos de validação HTML para que o navegador identifique valores ausentes, longos demais, fora do intervalo e formatados incorretamente antes do envio do formulário, e saiba quais são os limites dessa verificação.
    • Defina campos obrigatórios e limite o comprimento do texto
      Use required, minlength e maxlength e preveja quando o navegador aceita ou bloqueia um envio.
    • Defina intervalos e incrementos para números, datas e horários
      Use min, max e step para aceitar apenas valores adequados e preveja quais valores passam.
    • Verifique a correspondência com padrões e forneça orientações úteis
      Escreva regras simples de padrões, explique-as aos usuários, estilize campos válidos e inválidos e entenda por que o servidor deve verificar os dados novamente.
  3. Escreva a marcação de dados tabulares com linhas, células, cabeçalhos e um título, e mantenha tabelas maiores compreensíveis com escopos de cabeçalho, grupos de linhas e colunas e células mescladas.
    • Crie uma tabela de dados com cabeçalhos e título
      Use table, tr, th, td e caption para apresentar dados em linhas e colunas e dê à tabela uma estrutura clara com escopos de cabeçalho e grupos de linhas.
    • Mescle células e associe cabeçalhos complexos
      Use colspan e rowspan corretamente, agrupe colunas e associe células a seus cabeçalhos quando uma tabela tiver mais de um nível de títulos.
  4. Insira áudio e vídeo com os reprodutores do próprio navegador, forneça formatos e conteúdo alternativo que funcionem em diferentes navegadores e torne a mídia utilizável por todos com legendas descritivas, legendas de diálogo e transcrições.
    • Insira áudio e vídeo com os atributos adequados
      Use os elementos audio e video com controles, dimensões, uma imagem de apresentação e indicações de carregamento, e decida quando a reprodução automática e a repetição são adequadas.
    • Ofereça formatos e alternativas que funcionem em todos os ambientes
      Escolha formatos de arquivo amplamente compatíveis, liste fontes alternativas em ordem e adicione conteúdo alternativo.
    • Adicione legendas descritivas, legendas de diálogo e transcrições
      Escreva um arquivo WebVTT simples, associe-o com o elemento track e forneça transcrições para que a mídia funcione sem som.
  5. Coloque mapas, vídeos e outras páginas web dentro da sua página com iframes e escolha configurações que mantenham cada incorporação acessível, rápida, privada e segura.
    • Incorpore uma página com um iframe
      Adicione um iframe com título, tamanho e carregamento tardio, adapte um código de incorporação de outro site e reconheça sites que não permitem incorporação.
    • Garanta segurança e privacidade nas incorporações e escolha o elemento adequado
      Limite o que uma página incorporada pode fazer com sandbox e allow, considere o que as incorporações compartilham sobre os visitantes e escolha entre iframe, embed, object e os elementos de mídia.

Guia de estudo de Formulários em HTML

5 capítulos

1

Crie formulários que as pessoas possam usar

Um formulário útil começa com as informações que as pessoas precisam inserir. Escolha controles adequados a essas informações, dê a cada um um rótulo claro e associe os controles a um formulário que envie nomes e valores com significado. Um campo de pesquisa, um formulário de mensagem e um envio de arquivo coletam entradas, mas precisam de configurações diferentes. Acompanhar o HTML desde a entrada do usuário até a requisição enviada facilita a verificação dessas escolhas.

1.1 Como um formulário envia nomes e valores

Um formulário coleta respostas relacionadas e as envia para uma URL. O elemento <form> envolve seus controles e o botão de envio. Mantenha formulários separados: o HTML não permite um formulário dentro de outro.

Escolha o destino e o método

action indica a URL que recebe os dados. Sem ele, a requisição vai para a página atual. method escolhe como o navegador envia os dados; o padrão é GET.

MétodoPara onde os dados vãoUso típico
GETPara a URL após um ponto de interrogaçãoPesquisas e filtros
POSTPara o corpo da requisiçãoMensagens, cadastros e alterações em dados armazenados

Dados enviados por GET podem aparecer no histórico, nos favoritos e nos registros do servidor. POST os mantém fora da string de consulta (query string), mas não os criptografa. Use HTTPS para proteger dados em trânsito. O programa no servidor recebe e processa a requisição; o formulário HTML não salva nem envia respostas por email por conta própria.

Acompanhe uma requisição de pesquisa
<form action="/search" method="get">
  <label for="query">Search</label>
  <input id="query" type="search" name="q">
  <label for="language">Language</label>
  <select id="language" name="lang">
    <option value="en">English</option>
  </select>
  <button type="submit">Search</button>
</form>

Se o usuário inserir “html tables”, o navegador requisita /search?q=html+tables&lang=en. Ele pega o nome do campo q e seu valor atual, codifica o espaço como + e une os dois pares com &. O ? inicia a string de consulta.

Um controle precisa de um name para fornecer dados. Seu id tem outra finalidade: identificar o elemento na página, inclusive para associar um rótulo. Uma entrada com id="query", mas sem name, pode parecer e funcionar normalmente sem fornecer nenhuma resposta à requisição.

Saiba quais controles fornecem dados

Um campo de texto vazio com nome fornece um valor vazio, como comment=. Uma caixa de seleção marcada fornece seu value; sem um valor, fornece on. Uma caixa desmarcada não fornece nada. Um controle desativado fica indisponível e é omitido. Um campo readonly compatível não pode ser editado, mas ainda fornece seu valor.

Uma entrada oculta, como <input type="hidden" name="source" value="newsletter">, fornece um valor sem um controle visível. Ele não é secreto: os visitantes podem inspecioná-lo e alterá-lo nas ferramentas do desenvolvedor.

Deixe explícito o comportamento dos botões

Dentro de um formulário, um <button> comum envia o formulário por padrão. Escreva type="submit" para o botão de envio e type="button" para um botão que precisa de um script. type="reset" restaura os valores iniciais e pode apagar o trabalho do usuário. Pressionar Enter em um campo de uma linha também costuma enviar o formulário. <input type="submit" value="Send"> é outro controle de envio; um <button> também pode conter conteúdo em linha, como um ícone.

Envie o conteúdo de um arquivo
<form action="/upload" method="post" enctype="multipart/form-data">
  <label for="attachment">Attachment</label>
  <input id="attachment" type="file" name="attachment">
  <button type="submit">Upload</button>
</form>

Tanto POST quanto enctype="multipart/form-data" são necessários para um envio comum de arquivo. Com a codificação padrão do formulário, os nomes dos arquivos são enviados como texto, mas o conteúdo dos arquivos não é enviado.

Principais conclusões

  • O name de um controle identifica seu valor enviado; id identifica o elemento na página.
  • GET coloca os pares na URL; POST os coloca no corpo da requisição. HTTPS fornece criptografia durante o transporte.
  • Caixas de seleção desmarcadas e controles desativados são omitidos; campos somente de leitura compatíveis são enviados.
  • Declare explicitamente os tipos de botão para evitar envios ou redefinições acidentais.
  • O envio de arquivos exige POST e multipart/form-data.

1.2 Tipos de entrada e os valores que coletam

Um <input> é um elemento vazio, portanto não tem conteúdo nem tag de fechamento. Seu type seleciona o controle e a ajuda que o navegador oferece com ele. Tipos ausentes ou não reconhecidos recorrem a um campo de texto.

Associe o texto à sua finalidade
TipoUsoAjuda do navegador
textUma linha de texto livreEntrada de texto geral
searchUma consulta de pesquisaPode incluir um botão para limpar
emailUm endereço de emailTeclado para email e verificação de sintaxe
urlUm endereço web completoTeclado para URL e verificação de sintaxe
telUm número de telefoneTeclado para telefone; sem verificação de formato
passwordUma senhaOculta os caracteres visíveis

Um campo de email verifica a sintaxe, mas não se a caixa de entrada existe. Até “ana@example” passa na verificação básica de sintaxe. Adicione multiple para aceitar uma lista de endereços separados por vírgulas. Um campo de URL espera um esquema: “https://example.com” passa, enquanto “example.com” não passa. Os formatos de telefone variam, então tel não impõe nenhuma regra de formato. Ocultar a senha impede que pessoas próximas leiam a tela; HTTPS ainda fornece criptografia durante a transmissão.

Separe quantidades de códigos de dígitos

Use number para uma quantidade, como uma contagem ou uma massa. Ele costuma ter botões para aumentar ou diminuir o valor. Use range para um ajuste aproximado, como o volume; seu intervalo padrão vai de 0 a 100 e seu valor padrão é 50.

Um código de associado não é uma quantidade. Use <input type="text" inputmode="numeric"> para um código de dígitos, para que zeros iniciais permaneçam como texto e os botões de incremento não o alterem. inputmode apenas sugere um teclado na tela: ele não valida a entrada. decimal, tel, email e url são outras indicações úteis de teclado.

Separe os formatos de exibição e de envio

Seletores de data seguem a configuração regional do usuário. 15 de março de 2026 pode aparecer como “03/15/2026” ou “15/03/2026”, mas a data enviada é 2026-03-15.

TipoExemplo de valor enviado
date2026-03-15
time14:30
datetime-local2026-03-15T14:30
month2026-03
week2026-W11

Esses controles não armazenam um fuso horário. Portanto, quando isso for relevante, o local ou fuso de um horário de compromisso local precisa ser explicado separadamente.

Ofereça escolhas independentes ou únicas

Caixas de seleção são independentes: várias podem ser marcadas. Botões de opção formam um grupo de escolha única quando seus valores de name são iguais. Dê a cada botão de opção um value diferente e use checked para definir um padrão.

<label><input type="radio" name="size" value="S"> Small</label>
<label><input type="radio" name="size" value="M" checked> Medium</label>
<label><input type="radio" name="size" value="L"> Large</label>

A seleção padrão envia size=M. Nomes diferentes criariam grupos separados e permitiriam várias seleções.

Escolha cores e arquivos

color oferece um seletor e pode enviar uma cor RGB como #ff8800. file abre um seletor de arquivos; accept=".pdf,image/*" sugere PDFs e imagens, e multiple permite vários arquivos. O filtro ajuda os usuários a escolher; o servidor ainda deve verificar o tipo e o conteúdo do arquivo recebido. Para controles que o utilizam, value define o valor inicial, que permanece como valor enviado se o usuário não fizer alterações.

Principais conclusões

  • Escolha um tipo pelo significado dos dados, não apenas pela aparência.
  • Os tipos email e URL verificam a sintaxe; tel e inputmode não.
  • Use texto com uma indicação de teclado numérico para códigos de dígitos.
  • A exibição de datas e horários varia conforme a configuração regional; os formatos enviados são fixos e não contêm fuso horário.
  • Botões de opção compartilham um nome para uma escolha; caixas de seleção permitem escolhas independentes.
  • O filtro accept de um seletor de arquivos não é uma verificação de segurança.

1.3 Respostas longas, escolhas fixas e sugestões

Uma entrada de uma linha não é adequada para todas as respostas. Textos mais longos precisam de espaço, enquanto um conjunto fixo de escolhas precisa de controles que mostrem o que é permitido. Antes de escolher o elemento, decida se o usuário pode inserir algo fora das opções.

Dê espaço a textos mais longos com uma área de texto
<label for="message">Message</label>
<textarea id="message" name="message" rows="5" cols="40"></textarea>

rows fornece o número visível de linhas e cols a largura aproximada em caracteres. Nenhum dos dois limita a quantidade de texto que pode ser inserida; use maxlength para limitar o comprimento. O texto inicial deve ficar entre as tags, não em um atributo value. Espaços e quebras de linha ali passam a fazer parte do valor inicial, então tags de abertura e fechamento adjacentes criam uma caixa realmente vazia.

Envie um valor de uma lista suspensa
<label for="delivery">Delivery</label>
<select id="delivery" name="delivery" required>
  <option value="">Choose delivery</option>
  <option value="standard">Standard (3–5 days)</option>
  <option value="express">Express (next day)</option>
</select>

Escolher “Express (next day)” envia delivery=express. O texto visível pode explicar uma escolha enquanto seu value permanece curto e estável. Se uma opção não tiver value, seu texto será enviado. Adicione selected para selecionar previamente uma opção. Aqui, a primeira opção tem valor vazio, então a lista obrigatória de escolha única não pode ser enviada até que o usuário escolha um método de entrega.

Agrupe opções ou permita várias escolhas

Um <optgroup label="Hot drinks"> dá um título a opções relacionadas. Esse título não é uma opção. Um select com multiple permite selecionar várias opções, e size define suas linhas visíveis. Cada valor selecionado se torna um par separado com o mesmo nome: topics=html&topics=css.

A seleção múltipla em computadores costuma exigir Ctrl e clique ou Cmd e clique. Para uma lista curta de escolhas independentes, caixas de seleção geralmente tornam a seleção mais clara. Para uma lista curta de escolha única, botões de opção mantêm todas as opções visíveis. Uma lista fixa longa é um bom caso para usar um select.

Sugira sem restringir
<label for="city">City</label>
<input id="city" name="city" list="cities">
<datalist id="cities">
  <option value="Nairobi">
  <option value="Osaka">
</datalist>

O list da entrada corresponde ao id da datalist. Os usuários veem sugestões, mas ainda podem digitar outra cidade. Uma datalist é, portanto, útil para respostas comuns a uma pergunta aberta. Substituir um select por uma datalist altera as escolhas aceitas; não muda apenas a aparência da mesma lista fixa.

Exiba progresso ou uma medição

<progress> e <meter> exibem valores em vez de coletar respostas. Uma barra de progresso acompanha a conclusão, como em <progress value="70" max="100">70%</progress>. Um medidor mostra uma medição em um intervalo conhecido: <meter value="0.6">60%</meter> pode representar o armazenamento usado. Um medidor tem por padrão o intervalo de 0 a 1, a menos que min e max o alterem. O texto dentro desses elementos fornece conteúdo alternativo quando a barra não pode ser desenhada. Mantenha um rótulo explicativo ao lado de cada indicador para que os usuários saibam o que seu número mede.

Principais conclusões

  • O valor inicial de uma área de texto é seu conteúdo; rows e cols apenas definem seu tamanho visível.
  • Um select envia os valores das opções selecionadas e pode exigir uma escolha fixa.
  • Uma datalist sugere respostas, mas permite outros textos.
  • Use progress para a conclusão de uma tarefa e meter para uma medição em um intervalo conhecido.

1.4 Rótulos visíveis e instruções úteis para formulários

Um campo precisa de um nome que permaneça visível enquanto o usuário o preenche. Um <label> associado também fornece ao controle um nome acessível para leitores de tela e torna seu texto um alvo maior para clique. As instruções explicam qualquer regra que o rótulo sozinho não consiga transmitir.

Associe o rótulo ao controle
<label for="email">Email address</label>
<input id="email" name="email" type="email" autocomplete="email">

O for do rótulo corresponde ao id da entrada, incluindo maiúsculas e minúsculas. O name controla o envio e não precisa ser igual. Cada id deve ser único na página. Se for="email" apontar para um name, mas não houver um id correspondente, o rótulo parecerá normal, mas não estará associado.

Outra opção é envolver a entrada no rótulo:

<label>
  <input type="checkbox" name="news">
  Send me the monthly newsletter
</label>

Essa associação implícita é útil para um rótulo curto de caixa de seleção. Um par explícito de for e id também funciona quando o rótulo e o controle estão separados no HTML.

Mantenha rótulos separados de exemplos

Um texto de exemplo do campo, como “name@example.com”, desaparece quando a digitação começa. Ele também pode ser difícil de ler e não é um nome acessível confiável. Mantenha o rótulo visível; use um texto de exemplo apenas como exemplo curto quando ele ajudar.

Identifique campos obrigatórios com palavras, como “Nome (obrigatório)”, ou explique um asterisco uma vez acima do formulário. A cor sozinha não consegue informar a todos o que é obrigatório. Explique um formato antes que os usuários tentem enviar o formulário.

<label for="pw">Password (required)</label>
<input id="pw" name="password" type="password"
       required minlength="8" aria-describedby="pw-hint">
<p id="pw-hint">Use at least 8 characters.</p>

aria-describedby aponta para o id da orientação. Ele adiciona a instrução como descrição após o nome do campo; não substitui o rótulo.

Nomeie um grupo de controles
<fieldset>
  <legend>Delivery speed</legend>
  <label><input type="radio" name="speed" value="standard"> Standard</label>
  <label><input type="radio" name="speed" value="express"> Express</label>
  <label><input type="radio" name="speed" value="pickup"> Pickup</label>
</fieldset>

A legenda apresenta a pergunta comum; cada rótulo nomeia uma resposta. Um fieldset também pode agrupar campos de endereço relacionados. Coloque a legenda primeiro. disabled em um fieldset desativa seus controles descendentes, exceto controles dentro de sua primeira legenda. Mantenha controles comuns de formulário fora da legenda para que essa exceção não cause surpresas.

Ajude os navegadores a preencher dados conhecidos

autocomplete descreve a finalidade das informações sobre o usuário. Os valores incluem name, email, tel, street-address, postal-code, country-name, bday, new-password, current-password e one-time-code. Finalidades corretas ajudam no preenchimento com dados salvos e atendem ao critério 1.3.5 das WCAG 2.2, Identificar a finalidade da entrada (AA). autocomplete="off" é uma solicitação; os navegadores ainda podem oferecer senhas salvas.

Para um campo de telefone opcional, use o rótulo “Número de telefone (opcional)” com type="tel", name="phone" e autocomplete="tel". Clique no rótulo para verificar o foco e depois percorra o formulário usando Tab. Teste todos os rótulos dessa forma, incluindo os rótulos ao lado de caixas de seleção e botões de opção.

Principais conclusões

  • Um rótulo visível precisa de uma associação real com seu controle.
  • for corresponde a um id único; o envio usa name.
  • Uma legend nomeia um fieldset, enquanto os rótulos nomeiam seus controles individuais.
  • Associe orientações visíveis com aria-describedby e identifique campos obrigatórios em texto.
  • Use finalidades corretas de preenchimento automático e verifique o formulário com cliques e com o teclado.
2

Verifique as respostas antes do envio

O navegador pode identificar respostas ausentes, textos com comprimento incorreto, valores fora de um intervalo e entradas que não correspondem a um formato fixo. Essas verificações começam com o tipo de entrada e os atributos HTML. Acompanhe como várias regras se combinam, incluindo os casos em que um valor vazio é permitido. Instruções claras ajudam as pessoas a corrigir uma entrada; verificações no servidor continuam necessárias porque as regras do navegador podem ser contornadas.

2.1 Campos obrigatórios e comprimento do texto

A validação nativa verifica os controles de um formulário quando o usuário o envia. Um controle que falha bloqueia o envio; o navegador coloca o foco no primeiro campo inválido e fornece uma mensagem em seu próprio idioma. A redação exata é escolhida pelo navegador. Alterá-la exige JavaScript.

Exija uma resposta

required significa que um controle precisa de um valor. Para um campo de texto, uma string vazia falha. Em uma caixa de seleção, required significa que aquela caixa específica deve ser marcada, como na aceitação de termos. Para botões de opção com o mesmo nome, colocar required em um deles significa que um botão do grupo deve ser selecionado. Um select obrigatório de escolha única com uma primeira opção vazia precisa de uma seleção não vazia.

<label for="username">Username (required)</label>
<input id="username" name="username"
       required minlength="4" maxlength="12">

O navegador combina essas regras. O campo deve conter uma resposta, e o texto inserido pelo usuário deve respeitar os limites de comprimento. Omitir type resulta na entrada de texto normal.

Conte os caracteres inseridos

minlength define o menor comprimento permitido e maxlength o maior. Espaços e pontuação contam. O comprimento é medido em unidades de código UTF-16, então alguns emojis contam como dois; letras latinas comuns contam como uma unidade cada.

Neste exemplo, “Li” tem dois caracteres e não atinge o mínimo. “Lina” tem quatro e passa. “mountainhiker” tem 13 caracteres. Durante a digitação normal, o navegador para depois do décimo segundo, deixando “mountainhike”. A largura de uma caixa de texto não define esse limite.

Trate presença e comprimento como regras diferentes

Um campo opcional com minlength="4" pode ficar vazio. O comprimento mínimo é verificado quando o usuário fornece um valor. Adicionar required faz com que uma entrada vazia também falhe. Isso é relevante para um apelido opcional: o usuário pode omiti-lo, mas um apelido fornecido ainda precisa ter caracteres suficientes.

required é um atributo booleano. Sua presença o ativa, inclusive em required="false". Para tornar o campo opcional, remova o atributo. A mesma regra de presença se aplica a muitos outros atributos HTML que ativam opções.

Saiba o que essas verificações não determinam

Uma sequência de espaços ainda é conteúdo em um campo de texto. Portanto, required a aceita, e os espaços também contam para o comprimento. Uma regra que exija um caractere visível precisa de um padrão adequado ou de uma verificação no servidor. Não diga aos usuários que required sozinho garante uma resposta significativa.

As restrições de comprimento também dependem de como o valor foi inserido. Um valor inicial escrito em HTML, ou atribuído por um script, não é sinalizado por minlength ou maxlength apenas por ser curto ou longo demais. Um valor padrão correto continua sendo importante mesmo quando a digitação normal é limitada.

Para verificar esse campo, tente um envio vazio, depois insira duas letras, quatro letras e mais de 12 letras. Cada tentativa isola uma regra diferente. Quando o navegador parar a digitação no limite, leia o valor que realmente ficou no campo em vez de presumir que toda a entrada tentada foi aceita.

Principais conclusões

  • required e os limites de comprimento resolvem problemas diferentes.
  • Atributos booleanos permanecem ativados mesmo quando escritos com o valor "false".
  • Espaços contam como conteúdo; alguns emojis usam duas unidades de código UTF-16.
  • Um botão de opção obrigatório faz com que seu grupo de mesmo nome exija uma seleção.

2.2 Limites e incrementos permitidos

Um valor numérico ou de data pode ter o formato correto e ainda ser inadequado. min e max definem seus limites; step define quais incrementos são permitidos dentro deles. Um número deve passar nas duas verificações.

Defina o intervalo
<label for="weight">Parcel weight (kg)</label>
<input id="weight" name="weight" type="number"
       min="0.5" max="30" step="0.5">

Os extremos estão incluídos. Valores de 0,5 a 30 kg estão no intervalo, mas também precisam corresponder a incrementos de meio quilograma. Começando em 0,5, temos 0,5; 1; 1,5 e assim por diante até 30: 60 valores permitidos. Uma entrada de 31 excede o máximo; 2,25 está no intervalo, mas falha na verificação de incremento.

Encontre o ponto inicial antes de contar

Os incrementos são contados a partir de min quando ele está presente. Caso contrário, são contados a partir de um atributo HTML value válido e, na ausência dele, a partir da base padrão do tipo. Para number, essa base padrão é 0. O incremento padrão é 1.

Com min="1" step="2", os valores aceitos são 1, 3, 5, 7 e assim por diante. Quatro falha mesmo sendo múltiplo de dois, porque a sequência começa em um. Com min="0.5" e sem atributo de incremento, o incremento ainda é um: 0,5; 1,5 e 2,5 passam, enquanto 1 e 2 não passam.

Se nem min nem um atributo value fornecer uma base diferente, um campo numérico padrão aceita números inteiros. Use step="0.01" para incrementos de um centésimo ou step="any" para remover a verificação de incremento. any não remove o valor mínimo nem o máximo.

Use as unidades adequadas para datas e horários
TipoIncremento padrãoExemplo de limite
number ou range1max="30"
date1 diamin="2026-06-01"
time60 segundosmax="17:00"

Uma entrada de data com min="2026-06-01" max="2026-08-31" aceita datas nesse intervalo, incluindo os extremos. Escreva os atributos no formato de envio, mesmo que o seletor exiba outra ordem de data.

Para compromissos, type="time" min="09:00" max="17:00" step="900" usa 900 segundos, ou 15 minutos, por incremento. A sequência começa às 09:00 e termina às 17:00. Há 32 intervalos e 33 horários selecionáveis, incluindo os dois extremos.

Separe a digitação do valor armazenado

Alguns navegadores adaptados a diferentes regiões permitem a entrada decimal “2,5”, mas enviam 2.5. Um texto que não seja um número é bloqueado ou deixa o valor numérico vazio, dependendo do navegador. Uma entrada opcional vazia ainda é permitida, a menos que required esteja presente.

Um controle deslizante range permanece dentro do intervalo permitido e se ajusta aos incrementos, então os usuários não encontram os mesmos erros de intervalo e incremento que encontram ao digitar um número. Além disso, campos email e url não vazios passam por verificações de tipo mesmo sem required: tornar uma resposta opcional não torna válida uma resposta fornecida com formato incorreto.

Principais conclusões

  • Verifique separadamente os limites e a correspondência com os incrementos.
  • Encontre a base do incremento nesta ordem: min, value no HTML e depois a base padrão do tipo.
  • step="any" remove a verificação de incremento, mas mantém as outras restrições.
  • Incrementos de tempo são dados em segundos; incrementos de data, em dias.
  • Conte os extremos ao determinar o número de horários permitidos.

2.3 Padrões fixos e orientações úteis

Um padrão é útil quando uma organização define um formato de texto exato, como um código de produto. O navegador verifica o valor não vazio inteiro em relação ao padrão. Explique o formato ao lado do campo para que os usuários possam atendê-lo antes que apareça um erro.

Crie um padrão simples
<label for="code">Product code (required)</label>
<input id="code" name="code" required
       pattern="[A-Z]{3}-[0-9]{4}" aria-describedby="code-hint">
<p id="code-hint">Use 3 capital letters, a hyphen, and 4 digits (ABC-1234).</p>

[A-Z] corresponde a uma letra latina maiúscula e {3} a repete exatamente três vezes. O hífen fora dos grupos de caracteres é literal. [0-9]{4} exige quatro dígitos. “ABC-1234” passa. “abc-1234”, “ABC1234” e “ABC-12345” descumprem, cada um, uma parte diferente da regra.

Parte do padrãoSignificado
[A-Za-z]Uma letra latina básica
{2,5}De duas a cinco repetições
+Uma ou mais repetições
?Item anterior opcional
(cm|mm)Uma das duas alternativas, cm ou mm

Os padrões são comparados com o valor inteiro, então texto extra em qualquer uma das extremidades falha. Não adicione as barras externas usadas em expressões regulares do JavaScript. pattern se aplica a entradas semelhantes a texto, como text, search, tel, email, url e password, mas não a uma área de texto. Valores vazios ignoram a verificação de padrão; required trata uma resposta vazia.

Escreva a pontuação literal com cuidado

Caracteres como ., + e ? têm significados especiais. Use uma barra invertida quando eles precisarem aparecer literalmente: \. corresponde a um ponto. Dentro de um grupo de caracteres, padrões HTML modernos também exigem uma barra invertida para pontuação como um hífen literal: [a-z0-9\-]. Esse hífen é diferente daquele que define o intervalo a-z.

Um padrão inválido é ignorado. Outras regras, incluindo required e verificações de tipo, continuam sendo executadas. Teste um padrão com entradas que passam e que falham; um formulário que envia um valor esperado ainda não demonstrou que o padrão rejeita algo.

Explique a regra e o erro

Mantenha o texto de orientação visível ao lado do controle. Um title pode contribuir para algumas mensagens do navegador; mantenha a instrução de formato visível ao lado do campo. Evite padrões rígidos para nomes, telefones ou códigos postais, a menos que o formato aceito seja realmente fixo; respostas internacionais válidas podem variar muito.

O CSS oferece :valid e :invalid para o estado de validação atual de um campo. :user-invalid adia o estado inválido até a interação do usuário, evitando que um formulário ainda não preenchido fique coberto por estilos de erro. Combine cores com palavras ou um ícone para que a distinção permaneça visível sem a percepção de cores.

Decida quando as verificações são executadas

novalidate no formulário pula a validação do navegador durante o envio. formnovalidate em um botão de envio pula a validação para esse botão, o que pode ser útil para “Salvar rascunho” ao lado de um botão normal “Enviar”. As verificações do navegador também podem ser removidas pelas ferramentas do desenvolvedor ou contornadas por uma requisição direta. O servidor deve verificar os dados recebidos novamente antes de confiar neles.

Principais conclusões

  • Um padrão verifica o valor não vazio inteiro; required trata a ausência de valor.
  • Use padrões para verificar códigos fixos de organizações e explique seu formato de forma visível.
  • Um padrão malformado é ignorado enquanto as outras restrições continuam em vigor.
  • Use estilos de estado de validação com mais do que apenas cor.
  • Uma verificação do navegador ignorada ou contornada torna essencial a validação no servidor.
  • formnovalidate afeta um botão de envio; novalidate afeta o formulário.
3

Crie tabelas que expliquem seus dados

Uma célula de dados faz sentido por meio de sua linha e de sua coluna. As tabelas HTML permitem expressar essas relações para que as pessoas possam ler um valor junto aos cabeçalhos que o explicam. Comece com um título e cabeçalhos simples e depois adicione grupos de linhas ou células mescladas apenas quando os dados precisarem deles. Contar a grade e associar cada valor aos seus cabeçalhos mantém a tabela útil tanto quando é lida em voz alta quanto quando é visualizada.

3.1 Linhas, cabeçalhos e um título claro para a tabela

Use uma tabela quando um valor depende tanto de sua linha quanto de sua coluna: um registro de treinos, um quadro de horários ou uma comparação de medições. Use CSS para o layout da página. Um layout feito com células de tabela cria relações enganosas entre linhas e colunas para leitores de tela e se adapta mal a telas estreitas.

Construa a estrutura a partir dos dados

<table> contém a tabela, <tr> uma linha, <th> uma célula de cabeçalho e <td> uma célula de dados. As células são escritas da esquerda para a direita dentro de cada linha. Uma célula de dados em negrito continua sendo uma célula de dados; use <th> para expressar um cabeçalho.

<table>
  <caption>Running log, week 12</caption>
  <thead>
    <tr>
      <th scope="col">Day</th>
      <th scope="col">Distance (km)</th>
      <th scope="col">Time (min)</th>
    </tr>
  </thead>
  <tbody>
    <tr><th scope="row">Monday</th><td>5.0</td><td>28</td></tr>
    <tr><th scope="row">Wednesday</th><td>7.5</td><td>45</td></tr>
    <tr><th scope="row">Saturday</th><td>10.0</td><td>62</td></tr>
  </tbody>
  <tfoot>
    <tr><th scope="row">Total</th><td>22.5</td><td>135</td></tr>
  </tfoot>
</table>

O título é o primeiro elemento dentro da tabela. Ele informa aos leitores o que a tabela inteira descreve antes que encontrem seus valores. Um título próximo pode ajudar visualmente, mas o título da tabela fica associado à própria tabela.

Associe cada valor aos seus cabeçalhos

scope="col" indica que um cabeçalho se aplica ao longo de uma coluna. scope="row" indica que ele se aplica ao longo de uma linha. Portanto, o valor 7,5 pertence à linha “Wednesday” e à coluna “Distance (km)”. Um leitor de tela pode anunciar esse significado completo em vez de um número isolado.

Coloque unidades nos cabeçalhos das colunas para que se apliquem de forma consistente. Cada distância aqui está em quilômetros; cada tempo está em minutos. A distância total vem de 5,0; 7,5 e 10,0, resultando em 22,5 km. Os tempos 28, 45 e 62 resultam em 135 min.

Dê uma função a cada grupo

<thead> agrupa linhas de cabeçalho, <tbody> os dados principais e <tfoot> o resumo após o corpo. Esses grupos descrevem a estrutura e fornecem pontos de referência para o CSS. Os navegadores inserem um <tbody> em torno de linhas comuns escritas diretamente dentro de uma tabela, então a estrutura exibida pode ser diferente do código-fonte sem agrupamento.

Verifique o significado e também a aparência

Cada linha aqui cobre três colunas. Omitir uma célula de dados não informa ao navegador qual valor interno está faltando: as células seguintes podem ficar sob o cabeçalho errado. Escreva as células em suas posições corretas e use “0” para um zero conhecido ou “não aplicável” quando um valor não se aplicar. Uma célula vazia sem explicação deixa os leitores sem saber seu significado.

Tabelas não têm bordas por padrão. Para linhas simples, aplique border: 1px solid às células e border-collapse: collapse à tabela. O antigo atributo border é obsoleto. Uma borda ajuda a mostrar a grade, mas não pode fornecer relações de cabeçalho ausentes nem corrigir um valor fora de posição.

Principais conclusões

  • Tabelas expressam relações entre linhas e colunas nos dados.
  • Use th para cabeçalhos e td para dados; o negrito visual não fornece semântica.
  • Coloque um título da tabela primeiro e use scope para associar cabeçalhos simples.
  • Agrupe linhas com thead, tbody e tfoot e verifique as colunas cobertas por cada linha.
  • Coloque unidades nos cabeçalhos e deixe explícito o significado de dados ausentes.

3.2 Células mescladas e cabeçalhos em níveis

Células mescladas permitem que uma entrada cubra várias posições na grade. Elas alteram o número de novas células necessárias em uma linha, então planeje as posições ocupadas antes de escrever as tags.

Conte as posições em um quadro de horários com células mescladas

Considere três colunas: “Horário”, “Segunda-feira” e “Terça-feira”. Às 09:00, segunda-feira tem “Formulários” e terça-feira tem “Tabelas”. Às 10:00, segunda-feira começa “Validação”, que continua na linha das 11:00. Terça-feira tem “Mídia” às 10:00 e “Incorporações” às 11:00. Às 12:00, “Intervalo para almoço” cobre os dois dias.

<tr>
  <th scope="row">10:00</th>
  <td rowspan="2">Validation</td><td>Media</td>
</tr>
<tr>
  <th scope="row">11:00</th><td>Embeds</td>
</tr>
<tr>
  <th scope="row">12:00</th><td colspan="2">Lunch break</td>
</tr>

Às 11:00, a posição de segunda-feira já está ocupada pela célula de cima. As novas células são apenas o cabeçalho de horário e a entrada de terça-feira. Adicionar outra célula para segunda-feira empurraria o último valor para uma quarta coluna. Às 12:00, o cabeçalho de horário cobre uma coluna e a célula do almoço cobre duas, totalizando três.

colspan cobre colunas horizontalmente; rowspan cobre linhas verticalmente. Ambos têm valor padrão um. Ao verificar uma linha, conte as posições preenchidas por novas células e pelas extensões de linhas anteriores.

Descreva grupos de colunas

<colgroup> e <col> descrevem colunas e aparecem após o título da tabela, mas antes dos grupos de linhas. <col span="2"> representa duas colunas. Apenas um conjunto limitado de estilos se aplica por meio desses elementos, incluindo fundos, largura, visibilidade e bordas conforme as regras de borda da tabela aplicáveis. Eles não substituem cabeçalhos.

Para “Distância (km)” acima de duas colunas chamadas “Planejada” e “Realizada”, defina essas duas colunas como um grupo. Atribua ao cabeçalho superior colspan="2" scope="colgroup"; atribua aos cabeçalhos inferiores scope="col". A extensão controla a largura, enquanto o escopo declara a relação do cabeçalho. Um escopo de grupo de colunas precisa de um grupo de colunas correspondente na estrutura da tabela.

Associe cabeçalhos explicitamente quando necessário

Para relações que o escopo não consegue expressar com clareza, atribua IDs únicos aos cabeçalhos e liste-os no atributo headers da célula de dados:

<table>
  <caption>Monday distance plan</caption>
  <colgroup></colgroup>
  <colgroup span="2"></colgroup>
  <thead>
    <tr>
      <th rowspan="2" scope="col">Day</th>
      <th id="distance" colspan="2" scope="colgroup">Distance (km)</th>
    </tr>
    <tr>
      <th id="planned" scope="col">Planned</th>
      <th id="actual" scope="col">Actual</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th id="mon" scope="row">Monday</th>
      <td headers="mon distance planned">8</td>
      <td headers="mon distance actual">7.5</td>
    </tr>
  </tbody>
</table>

O valor planejado de 8 aponta para Monday, Distance (km) e Planned. O valor realizado de 7,5 compartilha os cabeçalhos de linha e de grupo, mas aponta para Actual. Os nomes separados por espaços devem corresponder aos IDs dos cabeçalhos, não ao texto visível deles.

O abbr de um cabeçalho pode fornecer uma versão mais curta para repetição, como <th abbr="Distance">Distance covered in kilometers</th>. Alguns leitores de tela usam essa forma mais curta. Quando muitas extensões ou três níveis de cabeçalhos tornam uma tabela difícil de acompanhar, divida os dados em tabelas mais simples com títulos individuais. Evite aninhar uma tabela dentro de uma célula de outra tabela.

Principais conclusões

  • Conte as posições ocupadas na grade, incluindo extensões de linhas anteriores.
  • Um colspan substitui células vizinhas; um rowspan ocupa posições em linhas posteriores.
  • Use grupos de colunas com scope="colgroup" para cabeçalhos agrupados.
  • O headers de uma célula lista os IDs de suas células de cabeçalho.
  • Prefira tabelas mais simples quando mesclagens e níveis de cabeçalhos ocultarem as relações.
4

Adicione mídias que as pessoas possam assistir e ouvir

Um reprodutor é apenas parte de uma mídia utilizável. Os visitantes também precisam de um arquivo compatível, de uma forma de iniciá-lo e pará-lo e de acesso às informações quando som ou imagens não estiverem disponíveis. Construa o reprodutor a partir do arquivo de mídia: reserve seu espaço, ofereça fontes adequadas e associe legendas descritivas verificadas ou uma transcrição. Indicações de carregamento e escolhas adequadas de reprodução também ajudam os visitantes a controlar o tempo e os dados que um vídeo consome.

4.1 Reprodutores, reprodução e escolhas de download

<video> e <audio> vinculam arquivos de mídia a uma página. O navegador baixa esses arquivos separados; o vídeo ou som não fica armazenado dentro do HTML. Adicionar controls disponibiliza os controles de reprodução, pausa, linha do tempo e volume do navegador.

<video src="intro.mp4" controls width="640" height="360"
       poster="intro-poster.jpg" preload="metadata"></video>
<audio src="episode-12.mp3" controls></audio>

Sem controles, um elemento de áudio não tem reprodutor visível e um vídeo não tem botão de reprodução visível. A página precisaria de controles com scripts para dar esse acesso aos usuários. Para uma página básica, mantenha os controles nativos de reprodução.

Reserve o espaço com a proporção adequada

width e height aceitam números simples em pixels CSS. Eles reservam espaço enquanto um vídeo carrega, reduzindo o movimento da página. Um vídeo de 1920 × 1080 exibido com largura de 640 tem altura correspondente de 360: a largura foi dividida por três, então a altura também deve ser dividida por três. Uma caixa de reprodutor com outra forma mantém as proporções da imagem e adiciona faixas vazias.

poster fornece uma imagem estática antes da reprodução. Sem ela, o navegador espera pelos dados de mídia antes de poder mostrar o primeiro quadro. A imagem de apresentação é útil quando pouco ou nenhum vídeo é pré-carregado.

Decida quanto pré-carregar
ValorIndicação de carregamento
noneNão pré-carregar a mídia
metadataBuscar informações como duração e dimensões
autoO navegador pode baixar o arquivo inteiro

Essas são indicações: o navegador pode ignorá-las. A reprodução automática também tem prioridade sobre o pré-carregamento. none é útil para mídias longas que muitos visitantes não assistirão; metadata ajuda a mostrar a duração sem buscar intencionalmente o clipe inteiro.

Entenda os atributos de reprodução

controls, autoplay, muted, loop e playsinline são atributos booleanos. Sua presença os ativa: muted="false" ainda inicia sem som. Remova o atributo para desativá-lo.

A reprodução automática com som costuma ser bloqueada até a interação do usuário, conforme as permissões e configurações do navegador. Vídeos silenciados são permitidos com mais frequência; o Safari no iPhone também precisa de playsinline para esse uso. Um clipe silencioso em repetição pode usar autoplay muted loop playsinline. loop reinicia o clipe após seu término. Não dependa da reprodução automática para comunicar informações essenciais.

O som automático pode competir com um leitor de tela, e o movimento pode distrair. O critério 1.4.2 (A) das WCAG 2.2 exige uma forma de pausar ou parar áudio automático com duração superior a três segundos, ou controlar seu volume de forma independente. O critério 2.2.2 (A) trata de conteúdo em movimento automático que dura mais de cinco segundos ao lado de outro conteúdo, a menos que seja essencial. Mantenha um mecanismo de pausa disponível; os controles nativos fornecem um para esses reprodutores de mídia.

Estime o consumo de dados

Um clipe de dois minutos a 5 megabits por segundo contém 600 megabits. Dividir por oito resulta em cerca de 75 megabytes antes de custos adicionais. Clipes mais curtos e uma indicação adequada de pré-carregamento reduzem transferências desnecessárias. O reprodutor iframe de uma plataforma hospedada pode transferir a distribuição para fora do servidor do seu site, mas os visitantes ainda baixam a mídia quando a assistem.

Principais conclusões

  • Mantenha os controles nativos para que os visitantes possam iniciar, pausar e ajustar a reprodução.
  • Use largura e altura numéricas para reservar o espaço de um vídeo.
  • O pré-carregamento é uma indicação; a reprodução automática pode ter prioridade sobre ele.
  • Atributos booleanos são ativados por sua presença.
  • Considere as restrições de reprodução automática e dê aos usuários controle sobre som ou movimento automático.
  • Um reprodutor de plataforma muda quem distribui a mídia, mas o visitante ainda precisa baixá-la.

4.2 Fontes alternativas e opções de reserva confiáveis

A extensão de uma mídia identifica seu contêiner, a estrutura de arquivo que contém imagem e som. Codecs comprimem e decodificam os fluxos dentro dele. Um navegador precisa oferecer suporte tanto ao contêiner quanto aos codecs; a extensão .mp4 sozinha não determina o que há dentro do arquivo.

Escolha formatos adequados

MP4 com vídeo H.264 e áudio AAC é uma opção de ampla compatibilidade nos sistemas atuais comuns. WebM com vídeo VP9 ou AV1 e áudio Opus também é amplamente compatível e pode reduzir o tamanho para uma determinada qualidade. Para áudio, MP3 é uma opção única amplamente compatível. O suporte ainda depende do codec efetivo e do sistema do usuário, então teste os próprios arquivos.

Ofereça fontes em ordem de prioridade
<video controls width="640" height="360" poster="tour.jpg">
  <source src="tour.webm" type="video/webm">
  <source src="tour.mp4" type="video/mp4">
  <p>Your browser cannot play this video.
    <a href="tour.mp4">Download the tour video (MP4)</a>.
  </p>
</video>
<p><a href="tour.mp4">Download the tour video (MP4)</a></p>

O navegador experimenta as fontes filhas em ordem e usa a primeira que consegue reproduzir. WebM é o formato preferido aqui; MP4 oferece outra opção caso WebM não possa ser reproduzido. Deixe src fora do próprio <video> ao usar fontes filhas. Um src no elemento de mídia tem prioridade e a lista de fontes filhas é ignorada.

O type é um tipo MIME que descreve o arquivo. Ele permite que o navegador pule um formato incompatível sem buscar dados de mídia primeiro. Um tipo incorreto pode fazer com que um arquivo reproduzível seja ignorado, então a declaração deve corresponder ao arquivo real. Listar a mesma codificação incompatível com outro nome não cria uma alternativa compatível.

Coloque a alternativa onde ela permaneça disponível

O conteúdo dentro de <video> é uma alternativa para um navegador que não reconhece o elemento de vídeo. Um navegador moderno que o reconhece, mas não consegue reproduzir nenhuma fonte, não mostra aquele parágrafo interno como uma mensagem geral de erro. O link de download separado fora do reprodutor permanece disponível nesse caso. Um link alternativo e fontes alternativas resolvem falhas diferentes.

Aplique o mesmo padrão ao áudio
<audio controls>
  <source src="episode-12.opus" type="audio/ogg; codecs=opus">
  <source src="episode-12.mp3" type="audio/mpeg">
  <p>Your browser cannot play this audio.</p>
</audio>
<p><a href="episode-12.mp3">Download episode 12 (MP3)</a></p>

Esse primeiro arquivo usa um contêiner Ogg com áudio Opus. A alternativa em MP3 usa audio/mpeg, o tipo MIME correto para MP3. O navegador não consegue deduzir pelo parágrafo alternativo que deve trocar de arquivo; os elementos source fornecem essa escolha. Ao verificar a página, confira os caminhos, os formatos reais dos arquivos e a reprodução e confirme separadamente se o link de download externo funciona.

Principais conclusões

  • A reprodução exige suporte ao contêiner e aos codecs.
  • As fontes filhas são experimentadas em ordem quando o elemento de mídia não tem src.
  • Tipos MIME corretos ajudam os navegadores a escolher uma fonte reproduzível.
  • Mantenha um link de download fora do reprodutor para falhas de fonte em navegadores modernos.

4.3 Legendas descritivas, transcrições e temporização WebVTT

As informações da mídia precisam de outra forma de acesso quando uma pessoa não consegue ouvi-las ou vê-las. Legendas descritivas incluem fala, identificação de quem fala e sons relevantes. Legendas de diálogo transcrevem ou traduzem diálogos para pessoas que ouvem o áudio, mas precisam de ajuda para compreendê-lo. Uma transcrição fornece a fala e os sons importantes em texto perto do reprodutor ou por meio de um link próximo claramente identificado. A audiodescrição narra informações visuais importantes.

Associe uma faixa de legendas descritivas
<video controls>
  <source src="intro.mp4" type="video/mp4">
  <track kind="captions" src="intro.en.vtt"
         srclang="en" label="English" default>
</video>
<p><a href="intro-transcript.html">Read the introduction transcript</a></p>

Coloque <track> depois das fontes. src aponta para um arquivo de faixa de texto, kind identifica sua finalidade, srclang identifica o idioma e label fornece o texto do menu do reprodutor. Uma faixa de legendas de diálogo deve ter srclang; inclua-o também para legendas descritivas. Apenas uma faixa deve ter default. Sem kind, o padrão é subtitles.

Escreva o arquivo de legendas descritivas

WebVTT é texto UTF-8 salvo com a extensão .vtt. A primeira linha é WEBVTT, seguida de uma linha em branco. Cada entrada temporizada tem uma linha de tempo e seu texto, com uma linha em branco antes da próxima entrada. Um identificador opcional pode preceder a linha de tempo de uma entrada.

WEBVTT

00:00:01.000 --> 00:00:04.500
MAYA: Welcome to the workshop.

00:00:05.000 --> 00:00:07.250
[door closes]

00:00:07.500 --> 00:00:11.000
MAYA: Let's build our first form.

A primeira entrada dura 3,5 segundos, a segunda 2,25 segundos e a terceira 3,5 segundos. A entrada de som comunica algo que um ouvinte escuta mesmo sem ninguém falar.

Mantenha a sintaxe de tempo exata

Minutos e segundos usam dois dígitos; milissegundos usam três após um ponto. As horas podem ser omitidas: 01:05.000 significa um minuto e cinco segundos. O fim deve ser posterior ao início. Uma linha em branco encerra uma entrada, então mantenha todo o texto dela junto, sem uma linha em branco no meio.

SRT usa marcas de tempo com vírgula, como 00:00:01,000; uma faixa precisa de WebVTT. A conversão exige o cabeçalho WebVTT e marcas de tempo com ponto, além da verificação da sintaxe das demais entradas. Renomear uma extensão .srt não converte seu conteúdo.

Verifique a disponibilização e a acessibilidade

Mantenha a faixa na mesma origem da página: o mesmo esquema, hospedeiro e porta. Uma faixa de outra origem precisa de uma configuração crossorigin adequada no vídeo e de permissão desse servidor. Caso contrário, um arquivo correto pode falhar ao carregar.

O critério 1.2.2 (A) das WCAG 2.2 exige legendas descritivas para vídeo pré-gravado com áudio, sujeito à exceção para mídia alternativa. O critério 1.2.1 (A) exige uma alternativa para conteúdo pré-gravado apenas em áudio, como uma transcrição para um podcast. Verifique nomes, termos técnicos, mudanças de falante e sons nas legendas automáticas antes de publicar.

Outros tipos de faixa incluem descriptions, chapters e metadata. Os reprodutores dos navegadores geralmente não os mostram como legendas comuns. Não coloque instruções visíveis essenciais em uma faixa de metadados esperando que apareçam na tela.

Principais conclusões

  • Legendas descritivas incluem sons relevantes e informações sobre quem fala; legendas de diálogo se concentram no diálogo.
  • Associe um arquivo .vtt com track e identifique sua finalidade e seu idioma.
  • Uma entrada WebVTT precisa de marcas de tempo válidas com ponto, texto e uma linha em branco de separação.
  • Verifique a precisão das legendas descritivas e forneça acesso a uma transcrição por perto.
  • Faixas de outra origem precisam de configurações no navegador e de permissão do servidor.
5

Incorpore outra página com cuidado

Um iframe dá a outra página web uma janela dentro da sua. Essa página traz seu próprio código, permissões, comportamento de carregamento e dependência de seu provedor. Dê à janela um nome e tamanho úteis e escolha quando ela carrega e o que pode fazer. Entender que uma incorporação é um documento separado ajuda a explicar quadros bloqueados, escolhas de privacidade e por que os estilos da sua página não alcançam o reprodutor de outro site.

Um <iframe> é um quadro embutido: ele exibe uma página web separada dentro da página atual. Esse documento tem seu próprio HTML, CSS e scripts. Os estilos da sua página podem dimensionar o quadro, mas não estilizam o conteúdo de outro documento dentro dele.

Comece com um quadro claro e dimensionado
<iframe src="https://maps.example.com/venue"
        title="Map of the venue"
        width="600" height="400" loading="lazy"></iframe>
<p><a href="https://maps.example.com/venue">Open the venue map</a></p>

src indica a página a carregar. O título informa a um usuário de leitor de tela o que há no quadro antes de entrar nele. “Mapa do local” descreve sua finalidade; “iframe” ou “conteúdo” não. O link direto oferece outro caminho se o navegador do visitante bloquear o quadro.

width e height aceitam números simples em pixels CSS. Sem eles, o quadro padrão mede 300 × 150 pixels CSS. Os navegadores também desenham uma borda padrão. Estilize-a com CSS em vez do atributo obsoleto frameborder.

Adapte o código de incorporação fornecido

Serviços de mapas e vídeo geralmente oferecem um trecho de código de incorporação nos controles de compartilhamento. Depois de colá-lo, inspecione a URL, melhore o título, verifique as dimensões e remova atributos de apresentação obsoletos. Uma URL de iframe é um endereço de página ou de reprodutor de serviço, não necessariamente um arquivo de mídia direto.

Use HTTPS para o endereço incorporado. Um quadro HTTP dentro de uma página HTTPS é conteúdo misto ativo e é bloqueado. Apenas escrever um título ou alterar o tamanho do quadro não faz uma URL insegura carregar.

Carregue no momento adequado

loading="lazy" adia um quadro até que ele esteja perto da área de visualização, poupando trabalho inicial para um mapa localizado muito abaixo na página. O padrão eager inicia o carregamento imediatamente. Use carregamento imediato para uma incorporação de destaque no topo, para que os visitantes não esperem pelo conteúdo principal. O carregamento tardio altera o momento; ele não elimina o contato com a rede quando o quadro finalmente carrega.

Para ajustar um reprodutor ao seu contêiner, o CSS pode definir sua largura como 100% e preservar sua proporção:

iframe.video-player {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border: 0;
}

Aplique class="video-player" ao iframe correspondente. As dimensões HTML ainda fornecem informações iniciais, enquanto o CSS controla o tamanho exibido.

Reconheça a recusa de um provedor

Um site pode proibir a incorporação em quadros por meio do cabeçalho de resposta HTTP X-Frame-Options ou de uma regra frame-ancestors de Content Security Policy. O navegador pode mostrar um quadro em branco ou um erro. Essas restrições ajudam a evitar o sequestro de cliques, em que uma página enganosa em um quadro captura cliques destinados a outra coisa.

O HTML da sua página não pode anular a recusa do outro site. Use o endereço de incorporação permitido pelo provedor, se ele oferecer um; caso contrário, forneça um link comum. Mantenha esse link também para falhas futuras: se um provedor remover ou mover seu conteúdo, um iframe inalterado em sua página pode parar de funcionar.

Principais conclusões

  • Um iframe contém um documento separado com seus próprios estilos e scripts.
  • Dê a cada quadro um título descritivo e um tamanho adequado.
  • Use carregamento tardio para incorporações fora da tela e URLs HTTPS.
  • Um provedor pode recusar a incorporação em quadros; ofereça um link direto quando isso acontecer.

5.2 Permissões, privacidade e escolha de elementos

Uma incorporação de terceiros entra em contato com seu provedor quando o conteúdo incorporado carrega, mesmo antes de um visitante iniciar a reprodução. Essa requisição revela informações como um endereço IP e pode envolver cookies. Decida se a página precisa desse contato imediatamente e de qual acesso o documento incorporado precisa.

Adie o contato quando apropriado

O carregamento tardio adia um quadro fora da tela até que ele esteja perto dela. Uma prévia que carrega uma incorporação apenas após um clique oferece aos visitantes uma escolha mais direta. Alguns serviços também oferecem modos de privacidade aprimorada. Um quadro do mesmo site não entra necessariamente em contato com outro provedor; srcdoc em linha evita buscar uma página separada, embora recursos referenciados por esse HTML ainda possam fazer requisições de rede.

Restrinja o comportamento do documento com sandbox
<iframe src="https://quiz.example.com/start"
        title="Practice quiz"
        sandbox="allow-scripts allow-forms"></iframe>

Um sandbox vazio aplica todas as suas restrições, incluindo o bloqueio de scripts, envio de formulários e pop-ups e a atribuição de uma origem opaca. Tokens removem restrições selecionadas. Aqui, o questionário pode executar scripts e enviar formulários, mas allow-popups não foi concedido. Adicione apenas os tokens necessários ao conteúdo; caso contrário, uma lista de permissões copiada pode anular limites úteis.

allow-same-origin permite que o documento mantenha sua origem normal. Não o combine com allow-scripts para conteúdo incorporado da sua própria origem: essa combinação pode permitir que o documento remova seu ambiente restrito. Um ambiente restrito também não significa que um quadro não faça requisições de rede.

Conceda recursos do navegador separadamente

allow é uma política de permissões para recursos como tela cheia, imagem em imagem, câmera e microfone. Um reprodutor de vídeo pode solicitar allow="fullscreen; picture-in-picture". Ele não precisa de acesso à câmera apenas por conter vídeo. O antigo allowfullscreen também concede acesso à tela cheia.

Tokens de sandbox governam o comportamento do documento; permissões de recursos respondem a outra questão. Conceder tela cheia não permite, por si só, que uma página em ambiente restrito envie um formulário ou execute um script.

Controle o referenciador e o conteúdo em linha

referrerpolicy="no-referrer" omite o endereço da página referenciadora da requisição. Com a política padrão usual, uma requisição HTTPS para outra origem envia a origem em vez do caminho completo; requisições para conexões menos seguras não enviam referenciador. Isso controla um cabeçalho, não todas as informações que um provedor recebe.

srcdoc fornece o HTML do quadro diretamente e tem prioridade sobre src:

<iframe title="Message preview" sandbox
        srcdoc="<p>Preview of your message</p>"></iframe>

O sandbox mantém essa pequena prévia restrita. Prévias de HTML mais gerais exigem cuidado com os recursos e a marcação que permitem.

Selecione o elemento para o recurso
RecursoElemento
Imagemimg
Arquivo de áudio ou vídeoaudio ou video
Uma página web, mapa ou reprodutor de serviçoiframe
Documento externo como um PDFobject ou embed

<object> pode conter conteúdo alternativo, como um link de download, caso o recurso não possa ser exibido. Conteúdo antigo de plug-ins, como Flash, não funciona mais nos navegadores atuais comuns; a Adobe encerrou o suporte ao Flash Player no fim de 2020. Mantenha links diretos ao lado de incorporações importantes e verifique periodicamente se o provedor ainda as disponibiliza.

Principais conclusões

  • Carregar conteúdo de terceiros entra em contato com seu provedor mesmo antes da reprodução.
  • Um ambiente restrito começa com restrições; tokens restauram recursos selecionados.
  • Mantenha allow-scripts e allow-same-origin separados para conteúdo da mesma origem.
  • Use allow para recursos necessários do navegador e a política de referenciador para o endereço referenciador.
  • Escolha elementos de mídia para arquivos de mídia e iframes para páginas separadas.

Exercícios resolvidos de Formulários em HTML

5 Lições Interativas

1

Crie um formulário de inscrição para uma oficina

20 passos
Escolha e associe controles e acompanhe os valores que um formulário de inscrição enviará.
  1. 1
    IntroduçãoComece pelas respostas necessárias

    Uma inscrição para uma oficina precisa de nome, dados de contato, uma escolha de sessão, interesses opcionais e uma mensagem. Cada resposta precisa de um controle adequado e de um rótulo.

    Construa o formulário em etapas: decida para onde ele envia dados, escolha os controles e depois associe rótulos e instruções. Você verificará tanto o que um visitante pode inserir quanto o que chega ao programa que recebe os dados.

  2. 2
    ExplicaçãoEscolha um destino e um método

    Use <form action="/registrations" method="post"> para enviar uma inscrição à URL que recebe os dados. POST coloca as respostas no corpo da requisição e é adequado a um envio que cria dados armazenados.

    A conexão ainda precisa de HTTPS para criptografia. Um método não torna as informações privadas por si só, e o HTML não armazena a inscrição; o programa que recebe os dados faz isso.

  3. 3
    ExemploDê uma chave de dados à resposta

    Comece com <input id="attendee" name="attendee">. Se o visitante inserir “Nora”, o controle fornece attendee=Nora.

    O name informa ao programa que recebe os dados qual resposta recebeu. O id identifica o campo na página. Remover o nome pode deixar uma caixa que parece funcionar, mas não fornece nada ao envio. Um rótulo posterior será associado por meio do id.

  4. 4
    DesafioPreveja os campos enviados

    Um formulário tem <input name="guest" value="Nora">, <input name="notes" value=""> e uma caixa de seleção desmarcada chamada updates. Quais campos fornecem dados?

    ---reveal---

    As entradas de texto fornecem guest=Nora e notes=. A caixa de seleção desmarcada não fornece nenhum par. Um valor de texto vazio é diferente de uma caixa de seleção omitida: um nomeia um campo sem texto; a outra está ausente dos dados enviados.

  5. 5
    DicaTorne o envio intencional

    Adicione <button type="submit">Register</button>. Um botão dentro de um formulário o envia por padrão, então um tipo explícito deixa a intenção clara.

    Se depois você adicionar um botão para uma ação com script, use type="button". Um botão de redefinição restaura os valores iniciais e pode apagar tudo o que o visitante digitou. Pressionar Enter em um campo de uma linha também pode acionar o envio, então o formulário deve funcionar sem depender de um clique do mouse.

  6. 6
    ExplicaçãoEscolha tipos de entrada para contato

    Use type="email" para o endereço de email e type="tel" para um número de telefone opcional. Esses tipos orientam a escolha de teclados em celulares, mas suas verificações são diferentes.

    Email verifica a sintaxe, não se a caixa de entrada existe. Tel não impõe um formato de telefone. Um campo de senha oculta os caracteres na tela, mas ainda precisa de HTTPS durante o envio. Escolha os tipos pelas informações que representam, não apenas pelo teclado desejado.

  7. 7
    ExemploMantenha códigos como texto

    Suponha que a oficina envie aos associados um código de dígitos. Use type="text" inputmode="numeric" para ele. A indicação de teclado numérico facilita a inserção de dígitos sem transformar o código em uma quantidade.

    Uma entrada number pode oferecer botões de incremento e comportamento baseado em quantidades, que são inadequados para um identificador. inputmode por si só não verifica nada; um formato fixo de código pode receber uma regra de validação separada.

  8. 8
    ExplicaçãoCrie um grupo de botões de opção para escolher uma sessão

    Ofereça três sessões com entradas de botão de opção que usem name="session". Dê a elas valores como morning, afternoon e evening.

    Escolher o botão da tarde fornece session=afternoon e desmarca a escolha anterior nesse grupo. Nomes diferentes permitiriam que várias sessões permanecessem selecionadas. Use caixas de seleção separadas para interesses independentes, pois os visitantes podem querer mais de um.

  9. 9
    DesafioCorrija um grupo de escolha única

    Dois botões de opção de sessão usam name="morning" value="morning" e name="afternoon" value="afternoon". Um visitante pode selecionar ambos. Que alteração faz deles um único grupo?

    ---reveal---

    Dê a ambos o mesmo nome, como name="session", mantendo seus valores diferentes. Nomes compartilhados estabelecem o grupo; valores distintos identificam a sessão escolhida. Apenas tornar seus ids iguais criaria identificações duplicadas na página sem corrigir o agrupamento.

  10. 10
    Ideia-chaveSepare uma data exibida de seu valor

    Um seletor de data pode mostrar o mesmo dia em ordens diferentes em dispositivos diferentes. Uma entrada do tipo date ainda envia um valor fixo em ano-mês-dia, como 2026-11-18.

    A exibição segue a configuração regional do visitante; a requisição não copia essa string exibida. Entradas de data e hora não fornecem um fuso horário. Portanto, um compromisso precisa de contexto visível suficiente para que o visitante saiba a qual local o horário se refere.

  11. 11
    ExemploOfereça uma escolha fixa obrigatória

    Uma lista longa de locais de oficina é adequada para um select. Dê a ele uma primeira opção vazia, como <option value="">Choose a location</option>, e adicione required ao select.

    Cada opção real tem seu próprio valor enviado. Escolher <option value="studio">Main studio</option> envia o par estável de chave/valor location=studio quando o select se chama location. O rótulo visível pode continuar descritivo.

  12. 12
    ExemploDeixe espaço para uma mensagem

    Adicione <textarea id="message" name="message" rows="5"></textarea> para uma resposta mais longa. O texto inicial fica entre suas tags; as tags adjacentes aqui mantêm o valor inicial vazio.

    Rows controla a altura visível, não o comprimento máximo da resposta. Uma datalist serve a outra tarefa: associe-a por meio do list de uma entrada para oferecer sugestões e permitir outras respostas. Ela não pode impor as escolhas fixas do select.

  13. 13
    DesafioEscolha entre sugestões e respostas fixas

    A oficina permite apenas os locais listados, mas alguém substitui o select por uma entrada de texto associada a uma datalist. O visitante agora pode digitar um local que não está na lista?

    ---reveal---

    Sim. Uma datalist oferece sugestões sem restringir a resposta. Mantenha um select quando os valores permitidos forem exatamente as opções fornecidas. Use uma datalist quando outra resposta deva continuar possível, como uma cidade que não esteja entre as sugestões comuns.

  14. 14
    ConexãoMostre o status sem coletar uma resposta

    Uma barra de progresso pode mostrar quanto o processamento da inscrição avançou. Um medidor pode mostrar uma medição em um intervalo conhecido, como o uso de armazenamento.

    Nenhum dos dois é um controle de entrada de resposta. Use <progress value="70" max="100">70%</progress> para a conclusão de uma tarefa e forneça um texto explicativo. Para um grupo de interesses opcionais independentes, use caixas de seleção para que os visitantes possam alterar e enviar suas escolhas.

  15. 15
    ExemploAssocie um rótulo visível

    Escreva <label for="attendee">Name (required)</label> ao lado da entrada com id="attendee". O valor de for deve corresponder exatamente ao id, incluindo maiúsculas e minúsculas.

    Clicar no rótulo deve colocar o foco na entrada. Mantenha o rótulo visível durante a digitação; um texto de exemplo do campo não cumpre essa função. A indicação de obrigatoriedade informa ao usuário o que é esperado, enquanto o atributo required faz o navegador exigir um valor.

  16. 16
    ExplicaçãoDê às opções uma pergunta comum

    Envolva os botões de opção das sessões em um fieldset cujo primeiro elemento filho seja <legend>Session</legend>. Mantenha um rótulo separado para cada botão de opção.

    A legenda explica a pergunta comum; os rótulos nomeiam suas respostas. Para campos de contato, valores corretos de autocomplete, como name, email e tel, ajudam o navegador a oferecer dados salvos. Uma orientação de formato próxima pode ser associada por meio de aria-describedby ao id da orientação.

  17. 17
    DesafioEncontre a associação de rótulo quebrada

    A marcação tem <label for="contact">Email</label> e <input id="email" name="contact" type="email">. Por que clicar no rótulo não coloca o foco nessa entrada?

    ---reveal---

    O valor de for corresponde ao name, mas não ao id. Altere-o para for="email" ou escolha um novo id único que corresponda a ele. O name já serve ao envio, então alterar a associação do rótulo não exige mudar a chave de dados esperada pelo programa que recebe os dados.

  18. 18
    DicaAdicione o envio de arquivo com sua codificação

    Se a inscrição precisar de um documento, adicione uma entrada type="file" com nome e defina enctype="multipart/form-data" no formulário POST. Essa codificação transporta o conteúdo do arquivo.

    Um filtro accept pode orientar o seletor de arquivos, mas não determina o que o servidor receberá. Lembre-se também de que controles desativados são omitidos, enquanto campos somente de leitura compatíveis são enviados. Use o atributo que corresponda ao comportamento desejado para os dados.

  19. 19
    DesafioVerifique o formulário concluído

    Uma entrada de local rotulada oferece apenas sugestões de datalist, e a entrada de email tem um id, mas não um name. O visitante deve escolher um local listado e o servidor precisa do email. Quais são as duas correções necessárias?

    ---reveal---

    Use um select para as escolhas fixas de local e adicione um name à entrada de email. O select controla quais escolhas são oferecidas; o name dá ao email uma chave para envio. Um rótulo visível sozinho não corrige nenhum dos dois problemas.

  20. 20
    RecapitulaçãoLeia o formulário em duas direções

    Do lado do visitante, verifique o tipo de controle, o rótulo visível, a pergunta comum e as instruções. Do lado do servidor, verifique o destino, o método, os nomes e os valores fornecidos.

    Depois, clique em cada rótulo e percorra o formulário com Tab. Essas verificações identificam falhas diferentes: um formulário pode ser fácil de preencher e ainda omitir dados, ou enviar dados corretos e ser difícil de entender.

2

Depure as regras de validação de um formulário

15 passos
Acompanhe valores ausentes, comprimentos, incrementos e formatos fixos antes de determinar por que um envio passa ou falha.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoAcompanhe as verificações que bloqueiam o envio
  2. 2
    ExplicaçãoExija um nome de usuário
  3. 3
    ExemploTeste presença e comprimento separadamente
  4. 4
    DesafioTorne o campo opcional
  5. 5
    DicaTeste a entrada do usuário, não apenas o padrão
  6. 6
    ExemploAplique primeiro o intervalo
  7. 7
    ExemploConte a partir da base efetiva
  8. 8
    DesafioSepare incremento de valor máximo
  9. 9
    ConexãoLeia incrementos de horário em segundos
  10. 10
    ExplicaçãoVerifique o código fixo da organização
  11. 11
    DesafioEncontre um padrão ignorado
  12. 12
    DicaExplique e mostre o erro
  13. 13
    Ideia-chaveUma verificação de conveniência não estabelece confiança
  14. 14
    DesafioDiagnostique um conjunto de falhas diferentes
  15. 15
    RecapitulaçãoUse uma pequena lista de testes de limite
3

Crie e verifique um quadro de horários de sessões

11 passos
Crie uma tabela legível e mescle células sem quebrar a grade nem as relações entre cabeçalhos.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoPlaneje a tabela antes das tags
  2. 2
    ExplicaçãoNomeie a tabela e suas colunas
  3. 3
    ExemploEscreva uma linha de dados completa
  4. 4
    DesafioCorrija um cabeçalho apenas visual
  5. 5
    DicaDeixe claro o significado de células vazias
  6. 6
    ExemploFaça uma sessão durar duas linhas
  7. 7
    DesafioConte uma linha abaixo de um rowspan
  8. 8
    ExemploEstenda o almoço pelas duas salas
  9. 9
    ExplicaçãoAssocie uma célula a cabeçalhos em níveis
  10. 10
    DesafioCorrija alinhamento e significado juntos
  11. 11
    RecapitulaçãoAcompanhe um valor pela tabela
4

Publique um vídeo curto com legendas descritivas

17 passos
Crie um reprodutor nativo, ofereça arquivos alternativos e associe uma faixa de legendas descritivas WebVTT que funcione.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoPublique as informações e também o arquivo
  2. 2
    ExemploReserve espaço para um reprodutor com controles
  3. 3
    ExplicaçãoUse uma indicação de carregamento de forma consciente
  4. 4
    DesafioDesative uma configuração booleana
  5. 5
    DicaPermita que as pessoas pausem mídias automáticas
  6. 6
    ExplicaçãoVerifique o contêiner e os codecs
  7. 7
    ExemploAdicione primeiro uma fonte preferida
  8. 8
    DesafioEncontre as alternativas não utilizadas
  9. 9
    Ideia-chaveMantenha uma alternativa fora do reprodutor
  10. 10
    ExplicaçãoEscolha legendas descritivas para informações sonoras
  11. 11
    ExemploEscreva a primeira entrada temporizada
  12. 12
    ExemploAdicione uma entrada para um som relevante
  13. 13
    ExemploAssocie o arquivo depois das fontes
  14. 14
    DesafioConverta uma marca de tempo corretamente
  15. 15
    DicaTeste a faixa e a transcrição
  16. 16
    DesafioCorrija duas falhas de acesso distintas
  17. 17
    RecapitulaçãoVerifique o caminho completo de acesso à mídia
5

Revise uma incorporação de mapa e questionário

12 passos
Nomeie e dimensione um quadro, escolha o comportamento de carregamento e restrinja-o aos recursos de que seu conteúdo precisa.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoTrate uma incorporação como outro documento
  2. 2
    ExemploNomeie o mapa antes de carregá-lo
  3. 3
    ExplicaçãoAdie o carregamento de um mapa abaixo do conteúdo principal
  4. 4
    DicaInspecione o código de incorporação copiado
  5. 5
    DesafioReconheça a regra de incorporação em quadros de um servidor
  6. 6
    ExplicaçãoComece o questionário com restrições
  7. 7
    Ideia-chaveMantenha a origem e os scripts sob controle
  8. 8
    DesafioConceda ao questionário apenas o necessário
  9. 9
    ConexãoSepare a privacidade do cabeçalho de referenciador
  10. 10
    ExplicaçãoEscolha um elemento para o recurso em questão
  11. 11
    DesafioRevise uma incorporação alterada
  12. 12
    RecapitulaçãoRevise o quadro como uma pequena dependência

Questões de Formulários em HTML

40 Questões de Prática em 4 conjuntos

Conjunto 1: Colete e envie as respostas adequadas10 Questões de Prática

Questão 1 de 10

Uma entrada preenchida tem id="visitor", mas não tem name. Por que seu texto está ausente dos dados enviados pelo formulário?
  1. O formulário precisa de POST para incluir entradas de texto.
  2. A entrada precisa de um nome para fornecer uma chave de dados.
  3. A entrada precisa de required para incluir seu valor.
  4. O id deve corresponder ao endereço da página que recebe os dados.
Mostrar respostaOcultar resposta
Resposta: B
O navegador monta os dados enviados a partir de controles com nome, então essa entrada precisa de um atributo name. Seu id identifica o elemento na página e pode associar um rótulo, mas não fornece uma chave para envio. Mudar a requisição de GET para POST não faria esse controle sem nome fornecer seu texto.

Questão 2 de 10

Um site coleta um código de equipamento como “00482”. Qual configuração de entrada é adequada a esse identificador e sugere um teclado numérico?
  1. type="number" step="1"
  2. type="range" min="0"
  3. type="tel" multiple
  4. type="text" inputmode="numeric"
Mostrar respostaOcultar resposta
Resposta: D
O código do equipamento é um texto que identifica um item, então uma entrada de texto preserva essa função, incluindo os zeros iniciais. O modo de entrada numérico sugere um teclado de dígitos sem o comportamento de um campo numérico. Um campo numérico trata a entrada como quantidade e pode oferecer controles para aumentá-la ou diminuí-la.

Questão 3 de 10

O rótulo usa for="address"; a entrada de email usa id="email" name="address". Qual alteração associa esse rótulo sem mudar a chave de dados enviada?
  1. Altere o rótulo para for="email".
  2. Altere a entrada para type="text".
  3. Altere a entrada para name="email".
  4. Altere o rótulo para name="address".
Mostrar respostaOcultar resposta
Resposta: A
Um rótulo explícito se associa por meio do id do controle, então for="email" cria a correspondência que faltava. O name pode continuar como address, preservando a chave esperada pelo programa que recebe os dados. Alterar apenas o name deixaria o rótulo apontando para um id que ainda não existe.

Questão 4 de 10

Um select de entrega é obrigatório e sua primeira opção selecionada é <option value="">Choose delivery</option>. O que acontece se o usuário enviar o formulário sem escolher outra opção?
  1. O texto visível da instrução é enviado como valor.
  2. O navegador envia a primeira opção não vazia.
  3. A seleção vazia bloqueia o envio normal.
  4. O select é omitido quando o formulário é enviado.
Mostrar respostaOcultar resposta
Resposta: C
O select obrigatório de escolha única é inválido enquanto sua primeira opção vazia permanece selecionada, então o envio normal é bloqueado. O texto da instrução não se torna o valor porque um valor vazio explícito foi fornecido. O navegador não escolhe outro método de entrega para o usuário sem avisar.

Questão 5 de 10

Um formulário GET tem como destino /lookup e contém uma entrada de texto name="term" com “css grid”, uma caixa de seleção desmarcada name="archived" value="yes" e uma entrada desativada name="region" value="east". Qual URL resulta da requisição?
  1. /lookup?term=css+grid&archived=no&region=east
  2. /lookup?term=css+grid
  3. /lookup?term=css+grid&archived=&region=
  4. /lookup?term=css+grid&region=east
Mostrar respostaOcultar resposta
Resposta: B
A entrada de texto com nome fornece seu valor atual, com o espaço codificado como +. A caixa de seleção desmarcada e a entrada desativada são omitidas, restando apenas term=css+grid. Um valor desativado não é enviado apenas porque aparece no HTML, e uma caixa desmarcada não cria automaticamente um valor no.

Questão 6 de 10

Dois botões de opção oferecem “Online” e “Presencial”, mas ambos permanecem marcados. Seus nomes são online e onsite. Como o agrupamento deve mudar?
  1. Dê aos dois um nome compartilhado e valores diferentes.
  2. Dê aos dois um id compartilhado e nomes diferentes.
  3. Dê required aos dois e mantenha nomes diferentes.
  4. Dê aos dois um valor compartilhado e nomes diferentes.
Mostrar respostaOcultar resposta
Resposta: A
Botões de opção pertencem a um grupo de escolha por meio de um nome compartilhado. Dê a eles o mesmo nome, como attendance, e valores diferentes que identifiquem as duas modalidades. Required controla se um grupo precisa de uma seleção; não reúne em um grupo botões com nomes diferentes.

Questão 7 de 10

Um campo de cidade oferece sugestões comuns, mas deve aceitar outras cidades digitadas. Qual configuração de controles é adequada?
  1. Um select contendo as opções de cidades comuns.
  2. Um grupo de botões de opção com as cidades comuns.
  3. Uma entrada associada a uma datalist de sugestões.
  4. Um campo de texto com padrão limitado às cidades sugeridas.
Mostrar respostaOcultar resposta
Resposta: C
Uma datalist sugere valores a uma entrada de texto associada sem limitar a entrada às sugestões. Isso é adequado a uma pergunta aberta sobre cidade com algumas respostas comuns. Um select restringiria as escolhas comuns às suas opções, então substituir a datalist por um select mudaria o que os visitantes podem inserir.

Questão 8 de 10

Um campo de texto opcional tem minlength="5". O que acontece com sua verificação de comprimento quando o usuário o deixa vazio?
  1. Ela falha porque zero é menor que cinco.
  2. Ela falha porque minlength implica obrigatoriedade.
  3. Ela mede, em vez disso, o texto de exemplo.
  4. Ela passa porque o campo está vazio.
Mostrar respostaOcultar resposta
Resposta: D
O comprimento mínimo não rejeita um campo opcional vazio, então essa verificação passa. Quando o usuário insere texto, o valor fornecido deve atingir o mínimo. Required é uma regra de presença separada; adicione-o quando a omissão também precisar ser bloqueada, em vez de esperar que minlength exija uma resposta.

Questão 9 de 10

Um formulário de documento usa GET com uma entrada de arquivo nomeada e codificação padrão. Um botão auxiliar também está enviando o formulário. Qual par de alterações permite um envio normal do conteúdo do arquivo e impede que o botão auxiliar envie o formulário?
  1. Use POST com codificação multipart; defina o tipo do botão auxiliar como button.
  2. Use POST com codificação padrão; defina o tipo do botão auxiliar como reset.
  3. Mantenha GET com codificação multipart; defina o tipo do botão auxiliar como button.
  4. Use POST com codificação multipart; remova o tipo do botão auxiliar.
Mostrar respostaOcultar resposta
Resposta: A
O envio do conteúdo de um arquivo precisa de POST e enctype="multipart/form-data", enquanto um botão auxiliar que não envia precisa de type="button". Essas alterações corrigem comportamentos separados. POST com a codificação padrão ainda não transporta o conteúdo do arquivo, e deixar ausente o tipo do botão auxiliar mantém seu comportamento normal de envio dentro de um formulário.

Questão 10 de 10

Uma entrada de texto contém required="false" minlength="3". A pessoa autora quer que ela seja opcional, com qualquer resposta inserida tendo pelo menos três caracteres. O que deve mudar?
  1. Remova minlength, mas mantenha required="false".
  2. Substitua required por required="optional".
  3. Remova required e mantenha minlength="3".
  4. Substitua minlength por maxlength="3".
Mostrar respostaOcultar resposta
Resposta: C
Remova required por completo e mantenha o comprimento mínimo. Required é booleano: sua presença ativa a configuração mesmo quando seu valor diz “false”. Manter minlength permite a omissão e ainda rejeita uma resposta fornecida que seja curta demais; mudá-lo para maxlength aplicaria uma regra diferente.
Conjunto 2: Verifique intervalos, padrões e estrutura de tabelas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Qual unidade step="300" usa em uma entrada do tipo time?
  1. Dias
  2. Minutos
  3. Milissegundos
  4. Segundos
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um campo numérico tem min="2" max="14" step="4". Qual valor inserido passa por todas essas restrições?
  1. 4
  2. 8
  3. 10
  4. 14,5
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um campo de horário tem min="08:20" max="10:20" step="1200". Quantos valores de horário não vazios atendem a essas configurações?
  1. 7
  2. 6
  3. 8
  4. 9
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um código obrigatório usa pattern="[A-Z]{2}-[0-9]{3}". Qual código inserido passa?
  1. “PZ-7314”
  2. “PZ-731”
  3. “PZ-73”
  4. “PZ731”
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma entrada de email é obrigatória e tem um padrão inválido "[". Um usuário insere “ravi”. O que acontece no envio normal?
  1. O valor é enviado porque o padrão é ignorado.
  2. O valor é enviado porque required é satisfeito.
  3. O envio é bloqueado apenas porque o padrão é malformado.
  4. O envio é bloqueado porque a sintaxe do email ainda falha.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma linha de tabela lista a temperatura e a umidade de um sensor. Qual elemento deve nomear esse sensor no início da linha?
  1. <td scope="row">
  2. <th scope="row">
  3. <th scope="col">
  4. <caption scope="row">
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma tabela de medições tem os cabeçalhos “Amostra”, “Massa (kg)” e “Tempo (min)”. Uma linha do corpo é <tr><th scope="row">B</th><td>18</td></tr>, destinada a mostrar uma massa indisponível e um tempo de 18 minutos. Como a linha deve ser corrigida?
  1. Coloque 18 na primeira célula e remova o cabeçalho de linha.
  2. Adicione colspan="2" à célula que contém 18.
  3. Insira uma célula de massa com “não disponível” antes da célula com 18.
  4. Substitua o cabeçalho de tempo por uma célula de dados vazia.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Uma tabela de quatro colunas tem os cabeçalhos “Horário”, “A”, “B” e “C”. Em uma linha, uma célula em A se estende até a linha seguinte. Essa linha seguinte precisa de um cabeçalho de horário e de uma entrada compartilhada para B e C. Quais novas células ela deve conter?
  1. Um th de horário e um td com colspan="2".
  2. Um th de horário e um td com colspan="3".
  3. Um th de horário e dois td, cada um com colspan="2".
  4. Um th de horário, um td vazio e um td com colspan="2".
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um clipe silencioso em repetição tem controles e muted="false". A pessoa autora quer desativar a configuração inicial de silêncio. Qual alteração faz isso?
  1. Adicione autoplay="false" ao vídeo.
  2. Remova controls do vídeo.
  3. Defina muted="off" no vídeo.
  4. Remova muted do vídeo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um arquivo MP3 é oferecido como fonte de áudio. Qual tipo MIME sua fonte deve declarar?
  1. audio/mp3
  2. audio/mpeg
  3. video/mpeg
  4. audio/ogg
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Torne utilizáveis as mídias e páginas incorporadas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Qual atributo torna visíveis os controles de reprodução do próprio navegador em um elemento de áudio?
  1. controls
  2. poster
  3. preload
  4. playsinline
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um vídeo lista fontes filhas WebM e depois MP4, mas também tem seu próprio src="preview.mp4". Por que a ordem das fontes filhas não determina a reprodução?
  1. Arquivos MP4 sempre têm prioridade sobre WebM nos navegadores atuais.
  2. As fontes filhas precisam de um nome compartilhado para formar uma lista.
  3. O src do elemento pai tem prioridade sobre as fontes filhas.
  4. A primeira fonte deve repetir o caminho do arquivo do elemento pai.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma legenda é exibida de 00:00:12.250 até 00:00:16.000. Por quanto tempo essa entrada fica visível?
  1. 4,25 segundos
  2. 3,75 segundos
  3. 3,25 segundos
  4. 4,75 segundos
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um vídeo lista arquivos de fonte filhos e uma faixa de outra origem. O vídeo também tem src="old.mp4". A faixa tem texto WebVTT válido, mas seu servidor não envia permissão para acesso entre origens e o vídeo não tem configuração crossorigin. Qual correção completa permite a seleção pretendida das fontes filhas e o uso da faixa de outra origem?
  1. Mantenha o src do pai; ative crossorigin no vídeo e a permissão do servidor.
  2. Mantenha o src do pai; mova a faixa para antes das fontes filhas.
  3. Remova o src do pai; adicione default à faixa sem alterar o servidor.
  4. Remova o src do pai; ative crossorigin no vídeo e a permissão do servidor.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um navegador oferece suporte a vídeo, mas não consegue reproduzir o arquivo oferecido. O vídeo tem seu próprio src apontando para esse arquivo, além de uma fonte filha que o navegador consegue reproduzir. Seu único link de download está dentro do vídeo. Quais alterações na marcação permitem essa alternativa e uma opção de reserva visível e confiável?
  1. Remova o src do pai; mantenha um link de download fora do vídeo.
  2. Mantenha o src do pai; mova o link de download para fora do vídeo.
  3. Remova o src do pai; deixe o link de download apenas dentro do vídeo.
  4. Mantenha o src do pai; coloque a fonte filha após o link interno.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um iframe contém um mapa do local de um evento. Qual título identifica melhor sua finalidade para um usuário de leitor de tela?
  1. “Conteúdo incorporado”
  2. “Mapa do local do evento”
  3. “Quadro 1 nesta página”
  4. “Mapa de 600 por 400 pixels”
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um questionário em um quadro precisa executar scripts e enviar seu formulário enquanto os pop-ups permanecem bloqueados. Qual valor de sandbox atende a essas necessidades?
  1. allow-forms allow-popups
  2. allow-scripts allow-popups
  3. allow-scripts allow-forms
  4. allow-same-origin allow-forms
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um quadro de prévia da mesma origem executa HTML não confiável. Ele tem sandbox="allow-scripts allow-same-origin", allow="camera" e referrerpolicy="no-referrer". A prévia precisa de scripts, mas não de câmera. Quais alterações de permissão restauram um isolamento útil e mantêm a execução de scripts?
  1. Remova camera; mantenha os dois tokens de sandbox e no-referrer.
  2. Remova allow-scripts; mantenha camera e allow-same-origin.
  3. Remova no-referrer; mantenha camera e os dois tokens de sandbox.
  4. Remova camera e allow-same-origin; mantenha allow-scripts.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma textarea tem rows="4" cols="35" e nenhum atributo de comprimento. Por que um visitante pode digitar mais de 140 caracteres?
  1. Rows e cols definem o tamanho visível, não o comprimento da entrada.
  2. Textareas sempre ignoram todas as regras possíveis de comprimento.
  3. Cols conta palavras enquanto rows conta parágrafos.
  4. O método do formulário aumenta o limite de entrada de texto.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um fieldset de entrega tem uma legend, mas seus botões de opção têm nomes diferentes e não têm rótulos. Um campo de email separado tem id e texto de exemplo, mas não tem name. A página deve permitir uma escolha de entrega, identificar cada controle e enviar o email. Qual correção atende às três necessidades?
  1. Compartilhe o nome dos botões; rotule botões e email; deixe o email sem nome.
  2. Compartilhe o id dos botões; rotule botões e email; adicione um nome ao email.
  3. Compartilhe o nome dos botões; mantenha apenas a legend; adicione um nome ao email.
  4. Compartilhe o nome dos botões; rotule botões e email; adicione um nome ao email.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Depure problemas combinados de HTML10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um mapa muito abaixo do conteúdo principal não precisa carregar até que o visitante se aproxime dele. Qual configuração do iframe solicita esse comportamento?
  1. loading="eager"
  2. preload="none"
  3. sandbox="lazy"
  4. loading="lazy"
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma entrada numérica tem value="0.25", nenhum min e nenhum atributo step. O usuário substitui seu valor. Qual entrada atende à regra de incremento padrão?
  1. 1,00
  2. 1,25
  3. 1,50
  4. 2,00
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um código de texto obrigatório deve corresponder a [A-Z]{2}[0-9]{2}. O formulário tem a validação normal ativada. Seu botão de envio “Salvar rascunho” tem formnovalidate, enquanto “Enviar” não tem. O código é “xy8”. O que acontece com cada botão?
  1. Ambos bloqueiam o envio até que o código corresponda ao padrão.
  2. Enviar o envia; Salvar rascunho bloqueia a falha no padrão.
  3. Salvar rascunho o envia; Enviar bloqueia a falha no padrão.
  4. Ambos enviam porque o código não está vazio.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma tabela de três colunas tem um cabeçalho na primeira coluna que se estende por duas linhas. Na segunda linha, um td se estende pelas duas colunas restantes. O td deve se referir aos cabeçalhos com ids r, planned e actual. Qual marcação é adequada para a segunda linha?
  1. <tr><td colspan="2" headers="r planned actual">12</td></tr>
  2. <tr><td></td><td colspan="2" headers="r planned actual">12</td></tr>
  3. <tr><td colspan="3" headers="r planned actual">12</td></tr>
  4. <tr><td colspan="2" headers="r,planned,actual">12</td></tr>
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um formulário POST tem uma entrada com name="member" value="K8" readonly, um campo de texto vazio com nome note e uma caixa de seleção desmarcada com nome copy. A requisição usa HTTPS. Qual comportamento de dados o programa que recebe a requisição deve esperar?
  1. Apenas member chega; HTTPS remove campos vazios.
  2. Member, note e copy chegam com seus valores exibidos.
  3. Apenas note chega; valores somente de leitura são omitidos.
  4. Member e note vazio chegam; copy é omitido.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

A faixa de texto de um vídeo deve comunicar tanto instruções faladas quanto um som importante de alarme. Qual tipo de faixa identifica essa finalidade?
  1. captions
  2. subtitles
  3. chapters
  4. metadata
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um reprodutor de terceiros usa no-referrer e carregamento tardio abaixo da primeira tela da página. Um visitante rola para perto dele, mas nunca inicia a reprodução. O que acontece quando o iframe carrega?
  1. O provedor recebe o caminho completo da página, mas nenhum endereço de rede.
  2. Nenhuma requisição é feita porque o visitante não iniciou a reprodução.
  3. O provedor é contatado sem o endereço da página referenciadora.
  4. Nenhuma requisição é feita porque no-referrer bloqueia todo contato.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um campo de apelido opcional tem minlength="4". Um usuário digita três espaços comuns. Ele passa na regra de comprimento? Por quê?
  1. Sim; campos opcionais pulam todas as restrições de comprimento.
  2. Não; o valor fornecido tem menos de quatro caracteres.
  3. Não; espaços sempre são removidos antes da verificação de comprimento.
  4. Sim; espaços satisfazem o mínimo de qualquer campo opcional.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um cabeçalho de tabela diz “Comprimento (m)” e uma célula de dados abaixo dele contém 2.4. Qual unidade pertence a esse valor?
  1. Centímetros
  2. Milímetros
  3. Quilômetros
  4. Metros
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um vídeo tem src="outdated.mov" e fontes filhas para WebM sem suporte e MP4/H.264/AAC com suporte, nessa ordem. Seu único link de download está dentro do reprodutor. Quais alterações permitem que esse navegador selecione o arquivo filho reproduzível e mantenha uma alternativa visível caso a reprodução ainda falhe?
  1. Mantenha o src do pai, prefira WebM e mova o link para fora.
  2. Remova o src do pai e coloque o link de download fora.
  3. Remova o src do pai, mas mantenha o link apenas dentro do vídeo.
  4. Mantenha o src do pai e substitua os tipos das fontes por video/mp4.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

79 Termos-Chave, cada um com sua definição

A

Abreviação do cabeçalho
Uma abreviação do cabeçalho é uma versão mais curta fornecida por abbr em uma célula de cabeçalho, que alguns leitores de tela usam ao repetir esse cabeçalho.
O cabeçalho longo “Distância percorrida em quilômetros” pode fornecer abbr="Distance" para uma repetição mais curta.
Ambiente restrito
Um ambiente restrito aplica restrições ao documento de um iframe, com tokens específicos que restauram capacidades selecionadas, como scripts ou envio de formulários.
Um questionário em um quadro permite scripts e formulários enquanto mantém a restrição do sandbox que bloqueia pop-ups.
Atributo action
O atributo action especifica a URL para a qual um formulário envia seus dados; sua omissão define a URL da página atual como destino.
Definir action="/messages" direciona o envio de uma mensagem para o endereço do site que recebe mensagens.
Atributo booleano
Um atributo booleano ativa uma configuração HTML por estar presente; seu valor escrito não ativa nem desativa a configuração.
Uma entrada com required="false" ainda é obrigatória, então o atributo deve ser removido para torná-la opcional.
Atributo headers
O atributo headers associa uma célula de dados a células de cabeçalho específicas por meio de uma lista de seus IDs únicos separados por espaços.
Uma célula que usa headers="mon distance planned" aponta para três cabeçalhos que explicam seu valor em conjunto.
Atributo required
O atributo required é um atributo booleano que faz um controle compatível precisar de um valor ou de uma seleção para passar na validação.
A caixa de seleção rotulada “Aceito os termos” deve ser marcada quando contém required.
Audiodescrição
Uma audiodescrição narra detalhes visuais importantes de que uma pessoa precisa para compreender um vídeo sem ver suas imagens.
A audiodescrição pode explicar uma demonstração silenciosa na tela que o diálogo comum nunca menciona.

Á

Área de texto
Uma área de texto é um controle de texto com várias linhas cujo valor inicial é escrito entre suas tags de abertura e fechamento de textarea.
Uma caixa de mensagem define rows="5" para a altura visível, enquanto maxlength limita separadamente o texto inserido.

B

Base do incremento
Uma base do incremento é o ponto inicial para os incrementos, obtido de min, depois de um value válido no HTML e, por fim, da base padrão do tipo de entrada.
Um campo numérico com min="1" step="2" permite 1, 3 e 5, então uma entrada de 4 dentro do intervalo falha.

C

Caixa de seleção
Uma caixa de seleção é um controle independente que pode estar marcado ou desmarcado e cujo valor é enviado somente quando a caixa está marcada.
Um visitante pode marcar tanto “Atualizações por email” quanto “Lembretes de eventos” porque as escolhas são independentes.
Carregamento tardio
O carregamento tardio adia uma requisição de iframe até que o quadro esteja perto da área de visualização, reduzindo o trabalho necessário para a visualização inicial da página.
Um mapa muito abaixo da introdução usa loading="lazy", enquanto o conteúdo principal no topo da página carrega prontamente.
Célula de cabeçalho
Uma célula de cabeçalho é um elemento th que nomeia uma linha ou coluna e expressa uma relação com as células de dados associadas da tabela.
O cabeçalho “Distância (km)” identifica a quantidade e a unidade compartilhadas por cada medição abaixo dele.
Célula de dados
Uma célula de dados é um elemento td que contém um valor de tabela cujo significado vem dos cabeçalhos associados à sua linha e coluna.
Em uma tabela com uma linha “Quarta-feira” e uma coluna “Distância (km)”, o valor 7,5 é lido como a distância de quarta-feira em quilômetros.
Codec
Um codec codifica ou decodifica um fluxo de mídia; um navegador precisa oferecer suporte aos codecs de vídeo e áudio efetivamente presentes em um contêiner.
Um MP4 pode combinar vídeo H.264 com áudio AAC, e ambos os fluxos precisam de suporte adequado para reprodução.
Comprimento máximo
Um comprimento máximo é o limite superior de entrada de texto definido por maxlength; os navegadores normalmente interrompem a digitação comum quando esse limite é atingido.
Um campo de nome de usuário com maxlength="12" para de aceitar um décimo terceiro caractere latino comum durante a digitação.
Comprimento mínimo
Um comprimento mínimo é um limite inferior para texto inserido, definido por minlength, que ainda permite um campo vazio a menos que required também se aplique.
Um apelido opcional com minlength="4" pode ser omitido, mas um apelido fornecido com duas letras falha.
Contêiner de mídia
Um contêiner de mídia é a estrutura de arquivo que contém fluxos de mídia e informações relacionadas, geralmente identificada por extensões como .mp4 ou .webm.
Dois arquivos MP4 podem conter fluxos codificados diferentes, então a extensão sozinha não garante a reprodução.
Conteúdo alternativo
O conteúdo alternativo dentro de um elemento de mídia é mostrado por navegadores que não oferecem suporte a esse elemento, e não como mensagem geral para toda falha de reprodução.
Um link de download fora do reprodutor permanece disponível mesmo quando um navegador moderno não consegue reproduzir suas fontes.
Conteúdo alternativo do elemento object
O conteúdo alternativo do elemento object é um conteúdo aninhado dentro de um elemento object para fornecer uma alternativa quando o recurso externo não pode ser exibido.
Um objeto PDF incorporado pode conter um link de download para que os leitores ainda possam obter o documento.
Conteúdo misto
O conteúdo misto combina uma página HTTPS com recursos solicitados por HTTP; um iframe HTTP é bloqueado porque é conteúdo ativo inseguro.
Uma página HTTPS de local que incorpora um mapa deve usar o endereço HTTPS de incorporação do mapa para evitar um quadro inseguro bloqueado.
Controle deslizante
Um controle deslizante permite escolher um valor numérico dentro de limites, ajustando-se aos incrementos definidos por seu step.
Um controle deslizante de volume pode usar min="0" max="10" quando um ajuste aproximado é mais útil que a digitação exata.
Controles nativos de reprodução
Os controles nativos de reprodução são a interface de reprodução do próprio navegador, ativada por controls para que os visitantes possam iniciar, pausar, navegar pela linha do tempo e ajustar o volume da mídia.
Um elemento de áudio se torna um reprodutor visível e utilizável quando a página adiciona o atributo controls.

D

Dados de formulário em múltiplas partes (multipart/form-data)
Dados de formulário em múltiplas partes são uma codificação de formulário que transporta partes separadas, incluindo o conteúdo de arquivos, em um envio POST.
Um formulário de envio de arquivo define enctype="multipart/form-data" para que os bytes do documento selecionado possam ser enviados.
Data e hora locais
Data e hora locais são uma data do calendário combinada com uma hora, sem fuso horário, como as coletadas por datetime-local.
Uma entrada de compromisso pode enviar 2026-07-09T10:30; o local deve fornecer qualquer contexto necessário de fuso horário.
Desvio da validação
Um desvio da validação pula as verificações normais de envio do navegador, usando configurações como novalidate ou uma requisição enviada fora do formulário.
Um botão de envio “Salvar rascunho” pode usar formnovalidate, enquanto o botão normal “Enviar” mantém a verificação.
Documento do quadro embutido
Um documento do quadro embutido fornecido com srcdoc é HTML escrito diretamente no atributo do iframe, com prioridade sobre uma URL src.
Uma prévia de mensagem em ambiente restrito usa srcdoc="<p>Preview of your message</p>" sem buscar uma página HTML separada.

E

Elemento source
Um elemento source oferece um arquivo de mídia alternativo dentro de um reprodutor, permitindo que o navegador selecione, em ordem, a primeira fonte que consegue reproduzir.
Um vídeo lista uma fonte WebM antes de MP4 para que WebM seja preferido quando o navegador conseguir reproduzi-lo.
Entrada de texto temporizada
Uma entrada de texto temporizada é uma entrada com horário de início, horário de término posterior e texto a ser exibido durante esse intervalo em uma faixa WebVTT.
O intervalo 00:00:01.000 --> 00:00:04.500 exibe uma entrada por três segundos e meio.
Escopo do cabeçalho
Um escopo do cabeçalho declara a direção ou o grupo ao qual um cabeçalho de tabela se aplica, por exemplo, ao longo de uma linha ou coluna.
Em uma tabela de distâncias diárias, cada nome de dia usa scope="row", enquanto o cabeçalho de distância usa scope="col" para os valores abaixo dele.
Estado de validação
Um estado de validação descreve se um controle atende atualmente às suas restrições, o que o CSS pode refletir com seletores de válido ou inválido.
O seletor :user-invalid pode adiar a estilização de erro até que o usuário tenha interagido com o controle.
Expressão regular
Uma expressão regular é uma notação compacta que descreve padrões de texto por meio de grupos de caracteres, regras de repetição e outros operadores.
A expressão [A-Z]{3} aceita exatamente três letras latinas básicas maiúsculas quando usada como padrão para o valor inteiro.
Extensão por colunas
Uma extensão por colunas faz uma célula de tabela ocupar várias posições horizontais da grade por meio de seu atributo colspan, substituindo células vizinhas.
Em um horário com duas colunas de dias, uma entrada de almoço com colspan="2" cobre ambas ao lado do cabeçalho de horário separado da linha.
Extensão por linhas
Uma extensão por linhas faz uma célula de tabela ocupar sua coluna ao longo de várias linhas, de modo que as posições cobertas em linhas posteriores não precisam de uma nova célula.
Uma sessão de segunda-feira com rowspan="2" deixa a posição de segunda-feira da linha seguinte já ocupada.

F

Faixa de texto
Uma faixa de texto é uma informação temporizada associada à mídia por meio de track, com um tipo como legendas descritivas, legendas de diálogo, capítulos ou metadados.
Uma faixa de legendas descritivas fornece seu idioma e um rótulo de menu para que os espectadores possam identificar e ativar o texto.
Formulário
Um formulário é um grupo de controles que coleta entradas relacionadas e envia os dados resultantes a uma URL de destino como uma requisição.
Um formulário de contato envia a mensagem e o endereço de email de um visitante juntos quando ele pressiona “Enviar”.

G

GET
GET é um método de requisição que coloca os dados enviados pelo formulário na string de consulta da URL e é adequado à leitura ou pesquisa de informações.
Uma pesquisa em um catálogo pode manter seus termos na URL para que o endereço dos resultados possa ser salvo nos favoritos.
Grupo de botões de opção
Um grupo de botões de opção é um conjunto de entradas de botão de opção com o mesmo nome, de modo que escolher uma opção desmarca qualquer seleção anterior nesse grupo.
Três velocidades de entrega usam name="speed" em comum e valores distintos para permitir uma única seleção.
Grupo de campos (fieldset)
Um grupo de campos reúne controles de formulário relacionados, permitindo que uma legenda compartilhada nomeie o grupo enquanto os controles individuais mantêm seus rótulos.
Um fieldset coloca três botões de opção de entrega juntos sob a pergunta comum “Velocidade de entrega”.
Grupo de colunas
Um grupo de colunas descreve colunas relacionadas de uma tabela com colgroup, fornecendo estrutura para cabeçalhos de grupo e certos estilos de coluna.
As colunas “Planejada” e “Realizada” compartilham um grupo de colunas definido sob o cabeçalho “Distância (km)”.
Grupo de linhas
Um grupo de linhas reúne linhas de tabela por função por meio de thead, tbody ou tfoot, separando cabeçalhos, dados principais e resumos.
Em um registro de corrida, a distância total e o tempo total aparecem em uma linha de rodapé dentro de tfoot, após as linhas do corpo.
Grupo de opções
Um grupo de opções é um elemento optgroup que coloca opções relacionadas de um select sob um título nomeado que não pode ser selecionado.
O título “Bebidas quentes” agrupa chá e café sem se tornar uma bebida que possa ser pedida no menu.

I

Imagem de apresentação do vídeo
Uma imagem de apresentação do vídeo é uma imagem estática separada, exibida por um elemento de vídeo antes da reprodução e selecionada por seu atributo poster.
Um vídeo de oficina mostra sua imagem introdutória enquanto espera que o visitante inicie a reprodução.
Incompatibilidade com o incremento
Uma incompatibilidade com o incremento ocorre quando um valor inserido não está a um número inteiro de incrementos permitidos da base aplicável.
A massa de 2,25 kg falha em um incremento de meio quilograma começando em 0,5, mesmo quando está dentro do intervalo permitido do campo.
Incremento
Um incremento é uma variação permitida a partir da base do incremento de um campo, que restringe quais valores dentro dos limites passam na validação.
Um campo de horário com step="900" usa incrementos de 15 minutos porque incrementos de horário são medidos em segundos.
Indicador de progresso
Um indicador de progresso exibe quanto de uma tarefa foi concluído, usando um elemento progress, seu valor atual e seu máximo.
Uma tarefa em 70 de 100 pode exibir uma barra de progresso enquanto o texto ao lado nomeia a tarefa.

L

Legenda do grupo de campos
Uma legenda do grupo de campos é o primeiro elemento filho de um fieldset que nomeia o grupo, dando aos controles relacionados uma pergunta ou um contexto comum.
A legenda “Preferências de contato” explica por que várias caixas de seleção de comunicação, cada uma com seu rótulo, aparecem juntas.
Legendas de diálogo
As legendas de diálogo transcrevem ou traduzem diálogos para ajudar espectadores a compreender o idioma falado enquanto o áudio está disponível para eles.
Um espectador que ouve o diálogo original pode usar legendas traduzidas para acompanhar seu significado.
Legendas descritivas para surdos e ensurdecidos
As legendas descritivas representam a fala, a identidade de quem fala e sons relevantes como texto temporizado para pessoas que não conseguem ouvir o áudio de uma gravação.
Uma legenda descritiva inclui “[porta se fecha]” para que a informação do som continue disponível com o reprodutor silenciado.
Lista de seleção (select)
Uma lista de seleção é um controle que oferece um conjunto fixo de opções e envia o valor da opção ou das opções selecionadas.
Um menu de entrega mostra “Expressa (dia seguinte)” enquanto envia o valor de opção mais curto express.
Lista de sugestões (datalist)
Uma lista de sugestões fornece valores sugeridos a uma entrada associada, deixando o usuário livre para digitar uma resposta fora dessas sugestões.
Um campo de cidade sugere “Osaka” e “Nairóbi”, mas ainda aceita outra cidade inserida pelo visitante.

M

Medidor
Um medidor exibe uma medição em um intervalo conhecido, como o armazenamento usado, em vez de mostrar a conclusão de uma tarefa em andamento.
Um medidor com value="0.6" e seu intervalo padrão mostra uma medição em 60% desse intervalo.
Modo de entrada
Um modo de entrada é uma indicação para o layout de um teclado na tela; ele não valida o texto nem limita os caracteres que um usuário pode inserir.
Um campo de texto para código de associado usa inputmode="numeric" para facilitar a entrada de dígitos em um celular.

N

Nome acessível
Um nome acessível identifica um controle ou quadro para a tecnologia assistiva, permitindo que sua finalidade seja anunciada quando um usuário chega até ele.
O rótulo “Número de telefone (opcional)” informa a um usuário de leitor de tela tanto o dado solicitado quanto seu caráter opcional.

O

Orientação associada por aria-describedby
Uma orientação associada por aria-describedby é um texto explicativo vinculado a um controle por meio de aria-describedby, que adiciona uma descrição junto ao seu rótulo.
Uma orientação de senha com seu próprio id explica “Use pelo menos 8 caracteres” antes do envio do formulário.
Origem
Uma origem é a combinação do esquema, do hospedeiro e da porta de um endereço web, usada por regras do navegador para distinguir limites de acesso a documentos.
Uma página incorporada do mesmo hospedeiro HTTPS e da mesma porta pode compartilhar uma origem com o documento que a contém.

P

Padrão de validação (pattern)
Um padrão de validação é um atributo de entrada que contém uma expressão regular à qual o valor não vazio inteiro deve corresponder para passar na verificação de formato.
Uma organização pode exigir um código de produto como “ABC-1234” usando seu próprio padrão fixo de letras e dígitos.
Par nome/valor
Um par nome/valor associa uma chave de dados enviada, obtida do atributo name de um controle, ao valor fornecido por esse controle.
Uma opção selecionada pode produzir delivery=express, mesmo quando seu rótulo visível é “Entrega expressa”.
Permissão de recurso do navegador
Uma permissão de recurso do navegador concede a um documento incorporado acesso a uma capacidade do navegador por meio de allow, sujeito a outras políticas do navegador e às escolhas do usuário.
Um reprodutor recebe permissão para tela cheia sem receber permissão desnecessária para usar a câmera do visitante.
Política de referenciador
Uma política de referenciador controla quanto do endereço da página referenciadora é enviado com uma requisição; no-referrer omite esse endereço por completo.
Um quadro com referrerpolicy="no-referrer" ainda entra em contato com seu provedor, mas não envia o endereço da página referenciadora.
POST
POST é um método de requisição que coloca os dados enviados pelo formulário no corpo da requisição e é adequado ao envio de mensagens ou à alteração de dados.
Um formulário de cadastro usa POST, com HTTPS protegendo a conexão que transporta os dados pessoais.
Pré-carregamento
O pré-carregamento é uma indicação sobre a busca de mídia antes da reprodução, solicitando que nada seja carregado, que apenas metadados básicos sejam carregados ou que o arquivo inteiro possa ser carregado.
Um clipe longo usa preload="none" para evitar solicitar sua mídia antecipadamente quando muitos visitantes podem ignorá-lo.
Preenchimento automático
O preenchimento automático é um atributo que descreve a finalidade de um campo para que o navegador possa oferecer informações salvas adequadas ao preenchimento.
Um campo de telefone usa autocomplete="tel" para que o navegador possa sugerir o número de telefone salvo do usuário.
Proporção entre largura e altura
Uma proporção entre largura e altura é a relação entre a largura e a altura de uma imagem ou vídeo, usada para manter sua forma quando o tamanho muda.
Um clipe de 1920 × 1080 tem proporção de 16:9, então um reprodutor correspondente com 640 pixels de largura tem 360 pixels de altura.

Q

Quadro embutido (iframe)
Um quadro embutido é um elemento iframe que exibe um documento web separado dentro da página atual, com seus próprios estilos e scripts.
Uma página de local incorpora a página de um serviço de mapas enquanto mantém o mapa dentro de uma área retangular definida.
Quantificador
Um quantificador especifica quantas vezes o item anterior do padrão pode se repetir, por exemplo, exatamente quatro vezes ou de duas a cinco vezes.
Em [0-9]{4}, o quantificador exige quatro dígitos, então três dígitos não completam o código esperado.

R

Reprodução automática
A reprodução automática solicita a reprodução sem que o botão de reprodução seja pressionado, mas os navegadores podem bloqueá-la conforme as configurações de som, interação e permissão.
Um clipe de fundo silenciado e reproduzido em linha tem mais chance de começar automaticamente do que um que começa com som.
Restrição de incorporação em quadros
Uma restrição de incorporação em quadros é uma regra de resposta do provedor que informa aos navegadores onde, ou se, sua página pode aparecer dentro de outras páginas.
Um quadro bloqueado precisa de um endereço de incorporação aprovado ou de um link direto; alterar seu título não pode anular a regra.
Rótulo
Um rótulo é um texto associado a um controle de formulário que fornece seu nome acessível e torna o texto um alvo clicável para esse controle.
Clicar em “Endereço de email” coloca o foco no campo cujo id corresponde ao atributo for do rótulo.

S

Sequestro de cliques
O sequestro de cliques engana um usuário para que clique em uma interface oculta ou enganosa dentro de um quadro; restrições de incorporação ajudam os sites a evitá-lo.
Um site pode recusar a incorporação em quadros para que seus botões não sejam escondidos sob uma interface enganosa em outra página.

T

Tabela de dados
Uma tabela de dados organiza valores relacionados em linhas e colunas para que cada valor adquira significado pelas duas dimensões da grade.
Um registro de corridas compara distâncias e tempos de vários dias usando uma linha por dia e colunas rotuladas.
Tipo de entrada
Um tipo de entrada é a configuração que escolhe o comportamento de entrada de um controle, como um campo de email, um seletor de data ou uma caixa de seleção.
Para uma data de chegada, type="date" fornece um seletor em vez de uma caixa de texto de uma linha sem restrições.
Tipo MIME
Um tipo MIME identifica o formato de um recurso para que um navegador possa decidir se oferece suporte a ele antes de buscar dados de mídia.
Uma fonte MP3 declara type="audio/mpeg", permitindo que o navegador reconheça o formato de áudio pretendido.
Título da tabela
Um título da tabela é o título próprio de uma tabela, colocado primeiro dentro dela para que os leitores possam identificar seu assunto antes de ler as células individuais.
O título “Registro de corridas, semana 12” distingue as medições dessa semana de outra tabela na página.
Transcrição
Uma transcrição é uma versão em texto legível da fala e dos sons relevantes, fornecida na página ou por meio de um link próximo claramente identificado.
Uma página de podcast coloca “Leia a transcrição do episódio” diretamente abaixo do reprodutor de áudio para facilitar o acesso.

V

Validação de restrições
A validação de restrições é a verificação, pelo navegador, dos valores de um formulário em relação aos tipos de entrada e atributos antes de um envio normal.
Enviar um formulário com um campo de email obrigatório vazio coloca o foco nesse campo e mostra uma mensagem do navegador.
Validação no servidor
A validação no servidor verifica os dados recebidos no programa do servidor porque os controles e as verificações de um navegador podem ser alterados ou contornados.
Um servidor rejeita um código de produto malformado mesmo que alguém tenha removido o padrão do campo nas ferramentas do desenvolvedor.
Valor máximo
Um valor máximo é um limite superior inclusivo definido por max que um valor numérico ou de data e hora não deve exceder para passar na validação.
Um campo de data com max="2026-08-31" permite 31 de agosto, mas rejeita uma data posterior inserida.
Valor mínimo
Um valor mínimo é um limite inferior inclusivo definido por min para uma entrada numérica ou de data e hora, que também fornece a base do incremento quando válido.
Com min="0.5" step="0.5", uma encomenda pode pesar 0,5 kg e os incrementos seguintes começam nesse valor.

W

WebVTT
WebVTT é um formato de faixa de texto UTF-8 que começa com WEBVTT e contém entradas temporizadas separadas por linhas em branco, geralmente salvo como .vtt.
Uma faixa de legendas descritivas aponta para intro.en.vtt, cujas marcas de tempo usam pontos antes dos dígitos de milissegundos.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar