- Aprender
- Computação e TI
- Programação
- Noções básicas de desenvolvimento web
- Formulários em HTML
Formulários, tabelas e mídias em HTML
BásicoAula 3 de 8 do curso Curso de Noções básicas de desenvolvimento web
O que você vai aprender
- 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 enviaUse 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 dadosEscolha 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 controlesColete 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 relacionadosAssocie 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.
- Configure um formulário e entenda o que ele envia
- 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 textoUse required, minlength e maxlength e preveja quando o navegador aceita ou bloqueia um envio.
- Defina intervalos e incrementos para números, datas e horáriosUse 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 úteisEscreva 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.
- Defina campos obrigatórios e limite o comprimento do texto
- 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ítuloUse 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 complexosUse 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.
- Crie uma tabela de dados com cabeçalhos e título
- 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 adequadosUse 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 ambientesEscolha 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çõesEscreva um arquivo WebVTT simples, associe-o com o elemento track e forneça transcrições para que a mídia funcione sem som.
- Insira áudio e vídeo com os atributos adequados
- 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 iframeAdicione 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 adequadoLimite 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.
- Incorpore uma página com um iframe
Guia de estudo de Formulários em HTML
1Crie 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étodo | Para onde os dados vão | Uso típico |
|---|---|---|
| GET | Para a URL após um ponto de interrogação | Pesquisas e filtros |
| POST | Para o corpo da requisição | Mensagens, 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
namede um controle identifica seu valor enviado;ididentifica 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
| Tipo | Uso | Ajuda do navegador |
|---|---|---|
text | Uma linha de texto livre | Entrada de texto geral |
search | Uma consulta de pesquisa | Pode incluir um botão para limpar |
email | Um endereço de email | Teclado para email e verificação de sintaxe |
url | Um endereço web completo | Teclado para URL e verificação de sintaxe |
tel | Um número de telefone | Teclado para telefone; sem verificação de formato |
password | Uma senha | Oculta 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.
| Tipo | Exemplo de valor enviado |
|---|---|
date | 2026-03-15 |
time | 14:30 |
datetime-local | 2026-03-15T14:30 |
month | 2026-03 |
week | 2026-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;
teleinputmodenã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
acceptde 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;
rowsecolsapenas 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.
forcorresponde a umidúnico; o envio usaname.- Uma legend nomeia um fieldset, enquanto os rótulos nomeiam seus controles individuais.
- Associe orientações visíveis com
aria-describedbye identifique campos obrigatórios em texto. - Use finalidades corretas de preenchimento automático e verifique o formulário com cliques e com o teclado.
2Verifique 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
requirede 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
| Tipo | Incremento padrão | Exemplo de limite |
|---|---|---|
number ou range | 1 | max="30" |
date | 1 dia | min="2026-06-01" |
time | 60 segundos | max="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,valueno 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ão | Significado |
|---|---|
[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;
requiredtrata 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.
formnovalidateafeta um botão de envio;novalidateafeta o formulário.
3Crie 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
thpara cabeçalhos etdpara dados; o negrito visual não fornece semântica. - Coloque um título da tabela primeiro e use
scopepara associar cabeçalhos simples. - Agrupe linhas com
thead,tbodyetfoote 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
headersde 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.
4Adicione 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
| Valor | Indicação de carregamento |
|---|---|
none | Não pré-carregar a mídia |
metadata | Buscar informações como duração e dimensões |
auto | O 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
.vttcomtracke 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.
5Incorpore 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.
5.1 Um quadro com título e um link alternativo utilizável
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
| Recurso | Elemento |
|---|---|
| Imagem | img |
| Arquivo de áudio ou vídeo | audio ou video |
| Uma página web, mapa ou reprodutor de serviço | iframe |
| Documento externo como um PDF | object 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-scriptseallow-same-originseparados para conteúdo da mesma origem. - Use
allowpara 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
1Crie um formulário de inscrição para uma oficina
20 passos
- 1Introduçã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.
- 2Explicaçã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.
- 3ExemploDê uma chave de dados à resposta
Comece com
<input id="attendee" name="attendee">. Se o visitante inserir “Nora”, o controle forneceattendee=Nora.O
nameinforma ao programa que recebe os dados qual resposta recebeu. Oididentifica 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. - 4DesafioPreveja os campos enviados
Um formulário tem
<input name="guest" value="Nora">,<input name="notes" value="">e uma caixa de seleção desmarcada chamadaupdates. Quais campos fornecem dados?---reveal---
As entradas de texto fornecem
guest=Noraenotes=. 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. - 5DicaTorne 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. - 6ExplicaçãoEscolha tipos de entrada para contato
Use
type="email"para o endereço de email etype="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.
- 7ExemploMantenha 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
numberpode oferecer botões de incremento e comportamento baseado em quantidades, que são inadequados para um identificador.inputmodepor si só não verifica nada; um formato fixo de código pode receber uma regra de validação separada. - 8Explicaçã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 comomorning,afternooneevening.Escolher o botão da tarde fornece
session=afternoone 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. - 9DesafioCorrija um grupo de escolha única
Dois botões de opção de sessão usam
name="morning" value="morning"ename="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. - 10Ideia-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
dateainda envia um valor fixo em ano-mês-dia, como2026-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.
- 11ExemploOfereç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 adicionerequiredao 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/valorlocation=studioquando o select se chamalocation. O rótulo visível pode continuar descritivo. - 12ExemploDeixe 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
listde uma entrada para oferecer sugestões e permitir outras respostas. Ela não pode impor as escolhas fixas do select. - 13DesafioEscolha 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.
- 14Conexã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. - 15ExemploAssocie um rótulo visível
Escreva
<label for="attendee">Name (required)</label>ao lado da entrada comid="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.
- 16Explicaçã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,emailetel, ajudam o navegador a oferecer dados salvos. Uma orientação de formato próxima pode ser associada por meio dearia-describedbyao id da orientação. - 17DesafioEncontre 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. - 18DicaAdicione o envio de arquivo com sua codificação
Se a inscrição precisar de um documento, adicione uma entrada
type="file"com nome e definaenctype="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.
- 19DesafioVerifique 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.
- 20Recapitulaçã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.
2Depure as regras de validação de um formulário
15 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoAcompanhe as verificações que bloqueiam o envio
- 2ExplicaçãoExija um nome de usuário
- 3ExemploTeste presença e comprimento separadamente
- 4DesafioTorne o campo opcional
- 5DicaTeste a entrada do usuário, não apenas o padrão
- 6ExemploAplique primeiro o intervalo
- 7ExemploConte a partir da base efetiva
- 8DesafioSepare incremento de valor máximo
- 9ConexãoLeia incrementos de horário em segundos
- 10ExplicaçãoVerifique o código fixo da organização
- 11DesafioEncontre um padrão ignorado
- 12DicaExplique e mostre o erro
- 13Ideia-chaveUma verificação de conveniência não estabelece confiança
- 14DesafioDiagnostique um conjunto de falhas diferentes
- 15RecapitulaçãoUse uma pequena lista de testes de limite
3Crie e verifique um quadro de horários de sessões
11 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoPlaneje a tabela antes das tags
- 2ExplicaçãoNomeie a tabela e suas colunas
- 3ExemploEscreva uma linha de dados completa
- 4DesafioCorrija um cabeçalho apenas visual
- 5DicaDeixe claro o significado de células vazias
- 6ExemploFaça uma sessão durar duas linhas
- 7DesafioConte uma linha abaixo de um rowspan
- 8ExemploEstenda o almoço pelas duas salas
- 9ExplicaçãoAssocie uma célula a cabeçalhos em níveis
- 10DesafioCorrija alinhamento e significado juntos
- 11RecapitulaçãoAcompanhe um valor pela tabela
4Publique um vídeo curto com legendas descritivas
17 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoPublique as informações e também o arquivo
- 2ExemploReserve espaço para um reprodutor com controles
- 3ExplicaçãoUse uma indicação de carregamento de forma consciente
- 4DesafioDesative uma configuração booleana
- 5DicaPermita que as pessoas pausem mídias automáticas
- 6ExplicaçãoVerifique o contêiner e os codecs
- 7ExemploAdicione primeiro uma fonte preferida
- 8DesafioEncontre as alternativas não utilizadas
- 9Ideia-chaveMantenha uma alternativa fora do reprodutor
- 10ExplicaçãoEscolha legendas descritivas para informações sonoras
- 11ExemploEscreva a primeira entrada temporizada
- 12ExemploAdicione uma entrada para um som relevante
- 13ExemploAssocie o arquivo depois das fontes
- 14DesafioConverta uma marca de tempo corretamente
- 15DicaTeste a faixa e a transcrição
- 16DesafioCorrija duas falhas de acesso distintas
- 17RecapitulaçãoVerifique o caminho completo de acesso à mídia
5Revise uma incorporação de mapa e questionário
12 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoTrate uma incorporação como outro documento
- 2ExemploNomeie o mapa antes de carregá-lo
- 3ExplicaçãoAdie o carregamento de um mapa abaixo do conteúdo principal
- 4DicaInspecione o código de incorporação copiado
- 5DesafioReconheça a regra de incorporação em quadros de um servidor
- 6ExplicaçãoComece o questionário com restrições
- 7Ideia-chaveMantenha a origem e os scripts sob controle
- 8DesafioConceda ao questionário apenas o necessário
- 9ConexãoSepare a privacidade do cabeçalho de referenciador
- 10ExplicaçãoEscolha um elemento para o recurso em questão
- 11DesafioRevise uma incorporação alterada
- 12RecapitulaçãoRevise o quadro como uma pequena dependência
Questões de Formulários em HTML
Conjunto 1: Colete e envie as respostas adequadas10 Questões de Prática
Questão 1 de 10
id="visitor", mas não tem name. Por que seu texto está ausente dos dados enviados pelo formulário?Mostrar respostaOcultar resposta
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
Mostrar respostaOcultar resposta
Questão 3 de 10
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?Mostrar respostaOcultar resposta
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
<option value="">Choose delivery</option>. O que acontece se o usuário enviar o formulário sem escolher outra opção?Mostrar respostaOcultar resposta
Questão 5 de 10
/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?Mostrar respostaOcultar resposta
+. 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
online e onsite. Como o agrupamento deve mudar?Mostrar respostaOcultar resposta
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
Mostrar respostaOcultar resposta
Questão 8 de 10
minlength="5". O que acontece com sua verificação de comprimento quando o usuário o deixa vazio?Mostrar respostaOcultar resposta
Questão 9 de 10
Mostrar respostaOcultar resposta
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
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?Mostrar respostaOcultar resposta
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
step="300" usa em uma entrada do tipo time?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
min="2" max="14" step="4". Qual valor inserido passa por todas essas restrições?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
min="08:20" max="10:20" step="1200". Quantos valores de horário não vazios atendem a essas configurações?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
pattern="[A-Z]{2}-[0-9]{3}". Qual código inserido passa?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
"[". Um usuário insere “ravi”. O que acontece no envio normal?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
<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?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
muted="false". A pessoa autora quer desativar a configuração inicial de silêncio. Qual alteração faz isso?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
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
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
src="preview.mp4". Por que a ordem das fontes filhas não determina a reprodução?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
00:00:12.250 até 00:00:16.000. Por quanto tempo essa entrada fica visível?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
rows="4" cols="35" e nenhum atributo de comprimento. Por que um visitante pode digitar mais de 140 caracteres?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
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
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
value="0.25", nenhum min e nenhum atributo step. O usuário substitui seu valor. Qual entrada atende à regra de incremento padrão?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
[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?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
r, planned e actual. Qual marcação é adequada para a segunda linha?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
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?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
2.4. Qual unidade pertence a esse valor?Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Travou em uma questão sua? Ajuda com Tarefas
Termos-Chave
A
Abreviação do cabeçalho
abbr="Distance" para uma repetição mais curta.Ambiente restrito
Atributo action
action="/messages" direciona o envio de uma mensagem para o endereço do site que recebe mensagens.Atributo booleano
required="false" ainda é obrigatória, então o atributo deve ser removido para torná-la opcional.Atributo headers
headers="mon distance planned" aponta para três cabeçalhos que explicam seu valor em conjunto.Atributo required
required.Audiodescrição
Á
Área de texto
rows="5" para a altura visível, enquanto maxlength limita separadamente o texto inserido.B
Base do incremento
min="1" step="2" permite 1, 3 e 5, então uma entrada de 4 dentro do intervalo falha.C
Caixa de seleção
Carregamento tardio
loading="lazy", enquanto o conteúdo principal no topo da página carrega prontamente.Célula de cabeçalho
Célula de dados
Codec
Comprimento máximo
maxlength="12" para de aceitar um décimo terceiro caractere latino comum durante a digitação.Comprimento mínimo
minlength="4" pode ser omitido, mas um apelido fornecido com duas letras falha.Contêiner de mídia
Conteúdo alternativo
Conteúdo alternativo do elemento object
Conteúdo misto
Controle deslizante
min="0" max="10" quando um ajuste aproximado é mais útil que a digitação exata.Controles nativos de reprodução
controls.D
Dados de formulário em múltiplas partes (multipart/form-data)
enctype="multipart/form-data" para que os bytes do documento selecionado possam ser enviados.Data e hora locais
2026-07-09T10:30; o local deve fornecer qualquer contexto necessário de fuso horário.Desvio da validação
formnovalidate, enquanto o botão normal “Enviar” mantém a verificação.Documento do quadro embutido
srcdoc="<p>Preview of your message</p>" sem buscar uma página HTML separada.E
Elemento source
Entrada de texto temporizada
00:00:01.000 --> 00:00:04.500 exibe uma entrada por três segundos e meio.Escopo do cabeçalho
scope="row", enquanto o cabeçalho de distância usa scope="col" para os valores abaixo dele.Estado de validação
:user-invalid pode adiar a estilização de erro até que o usuário tenha interagido com o controle.Expressão regular
[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
colspan="2" cobre ambas ao lado do cabeçalho de horário separado da linha.Extensão por linhas
rowspan="2" deixa a posição de segunda-feira da linha seguinte já ocupada.F
Faixa de texto
Formulário
G
GET
Grupo de botões de opção
name="speed" em comum e valores distintos para permitir uma única seleção.Grupo de campos (fieldset)
Grupo de colunas
Grupo de linhas
tfoot, após as linhas do corpo.Grupo de opções
I
Imagem de apresentação do vídeo
Incompatibilidade com o incremento
Incremento
step="900" usa incrementos de 15 minutos porque incrementos de horário são medidos em segundos.Indicador de progresso
L
Legenda do grupo de campos
Legendas de diálogo
Legendas descritivas para surdos e ensurdecidos
Lista de seleção (select)
express.Lista de sugestões (datalist)
M
Medidor
value="0.6" e seu intervalo padrão mostra uma medição em 60% desse intervalo.Modo de entrada
inputmode="numeric" para facilitar a entrada de dígitos em um celular.N
Nome acessível
O
Orientação associada por aria-describedby
id explica “Use pelo menos 8 caracteres” antes do envio do formulário.Origem
P
Padrão de validação (pattern)
Par nome/valor
delivery=express, mesmo quando seu rótulo visível é “Entrega expressa”.Permissão de recurso do navegador
Política de referenciador
referrerpolicy="no-referrer" ainda entra em contato com seu provedor, mas não envia o endereço da página referenciadora.POST
Pré-carregamento
preload="none" para evitar solicitar sua mídia antecipadamente quando muitos visitantes podem ignorá-lo.Preenchimento automático
autocomplete="tel" para que o navegador possa sugerir o número de telefone salvo do usuário.Proporção entre largura e altura
Q
Quadro embutido (iframe)
Quantificador
[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
Restrição de incorporação em quadros
Rótulo
id corresponde ao atributo for do rótulo.S
Sequestro de cliques
T
Tabela de dados
Tipo de entrada
type="date" fornece um seletor em vez de uma caixa de texto de uma linha sem restrições.Tipo MIME
type="audio/mpeg", permitindo que o navegador reconheça o formato de áudio pretendido.Título da tabela
Transcrição
V
Validação de restrições
Validação no servidor
Valor máximo
max="2026-08-31" permite 31 de agosto, mas rejeita uma data posterior inserida.Valor mínimo
min="0.5" step="0.5", uma encomenda pode pesar 0,5 kg e os incrementos seguintes começam nesse valor.W
WebVTT
intro.en.vtt, cujas marcas de tempo usam pontos antes dos dígitos de milissegundos.Sobre esta aula
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.