Noções de formulários
Clique na palavra Email ao lado de um campo de formulário bem feito e o cursor pula para dentro da caixa. Esse pequeno detalhe é o elemento label fazendo o trabalho dele.
O que um formulário faz
Caixas de busca, páginas de cadastro e telas de pagamento são todas formulários. Um elemento <form> agrupa os controles e, quando o visitante o envia, o navegador manda o name de cada controle junto com o valor dele para o endereço do atributo action do formulário. O atributo method diz como: get põe os dados no endereço, o que serve para buscas que você pode querer salvar nos favoritos, enquanto post os envia no corpo da requisição, o que serve para tudo o que altera dados, como um pedido. O HTML monta o formulário; um programa no servidor decide o que fazer com o que chega.
<form action="/subscribe" method="post"> <label for="name">Name</label> <input id="name" name="name" type="text" autocomplete="name"> <label for="email">Email</label> <input id="email" name="email" type="email" required autocomplete="email"> <button type="submit">Subscribe</button> </form>
Todo controle precisa de um label
O elemento <label> dá nome a um controle. Ligue os dois dando ao input um id e ao label um atributo for igual, ou colocando o input dentro do label. A ligação faz duas coisas. Os leitores de tela leem o label quando o campo recebe o foco, então o usuário ouve Email, editar texto em vez de só editar texto. E clicar no label põe o foco no campo ou marca a caixa de seleção, o que dá a todos, principalmente a quem usa celular, um alvo maior. Um placeholder (texto de dica cinza dentro da caixa) não é um label: ele some assim que você digita, muitas vezes tem pouco contraste, e algumas tecnologias assistivas o ignoram.
Tipos de input
O atributo type de <input> muda o controle. text é a caixa padrão de uma linha. email, tel e url parecem iguais, mas mostram o teclado certo no celular, e o navegador confere se um endereço de e-mail tem o formato certo. number aceita algarismos e pode ter min e max. password esconde o que você digita, date oferece um calendário, e checkbox e radio são caixas para marcar. Para textos mais longos, use <textarea>, e para escolher numa lista, <select> com elementos <option> dentro.
Como agrupar opções
Os botões de opção (radio) de uma mesma pergunta têm o mesmo name, e só um deles pode ser escolhido de cada vez. Envolva o grupo em <fieldset> e coloque a pergunta em <legend>. Assim o leitor de tela lê a pergunta junto com cada opção: Loaf size, Small, botão de opção, 1 de 2. Cada botão de opção continua tendo o seu próprio label.
Botões e verificações embutidas
Um <button> dentro de um formulário o envia por padrão; escrever type="submit" deixa isso claro, e type="button" cria um botão que não faz nada até o JavaScript lhe dar uma tarefa. Antes de enviar, o navegador pode verificar os campos por você. required barra o formulário se o campo estiver vazio, type="email" recusa texto sem @, e minlength, min e max definem limites. Essas verificações ajudam o visitante a corrigir erros cedo, mas rodam no navegador dele e podem ser contornadas, então o servidor precisa verificar os dados de novo. O atributo autocomplete, com valores como email ou name, permite que o navegador preencha dados salvos, o que poupa digitação para todos e ajuda especialmente pessoas com dificuldades motoras ou de memória.
| form | Agrupa controles e envia seus nomes e valores |
| label | Dá nome a um controle; for corresponde ao id do input |
| name | Chave enviada ao servidor junto com o valor |
| required | O campo precisa ser preenchido antes do envio |
| fieldset / legend | Agrupa controles relacionados sob uma pergunta |
| placeholder | Texto de dica dentro de uma caixa; não é um label |
| method="post" | Envia os dados no corpo da requisição; para alterações como pedidos |
- Um label tem for="phone". A qual input ele pertence?
- Ao input com id="phone"
- Ao input com name="phone"
- Ao próximo input, qualquer que seja o id
- Por que um placeholder não basta como label?
- Ele some quando você digita e muitas vezes tem pouco contraste
- Não é HTML válido
- Ele não envia nada
- Qual tipo de input mostra o teclado de e-mail no celular e confere o @?
- Dois botões de opção precisam se excluir. O que eles precisam ter em comum?
- name
- id
- value
- Qual elemento guarda a pergunta de um fieldset?
- legend
- caption
- label
- Qual method serve para um formulário de busca que você pode salvar nos favoritos?
- get
- post
- O navegador verifica os campos obrigatórios. O servidor ainda precisa verificar?
- Sim, as verificações do navegador podem ser contornadas
- Não, o navegador basta
- Só para senhas
- Qual elemento é o certo para uma mensagem de várias linhas?
- textarea
- input type="text"
- select
- O que acontece ao clicar num label bem ligado?
- Põe o foco no campo dele ou marca a caixa dele
- Envia o formulário
- Apaga o campo
- Qual atributo deixa o navegador preencher um endereço de e-mail salvo?
- autocomplete="email"
- placeholder="email"
- value="email"
- form envia o name e o valor de cada controle para action, por get ou post.
- Todo controle recebe um label (for corresponde ao id); placeholder não é label.
- Escolha o type certo; agrupe radios com fieldset e legend; o servidor verifica de novo.
Fontes deste curso (10)
- WHATWG, HTML Living Standard (html.spec.whatwg.org, checked 2026-10-17)
- MDN Web Docs, Learn web development: Structuring content with HTML, and the HTML element reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Structuring_content and developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements, checked 2026-10-17)
- MDN, HTML images (alt text guidance, checked 2026-10-17)
- W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree, checked 2026-10-17)
- CERN, A short history of the Web (home.cern/science/computing/the-birth-of-the-web/short-history-web/, checked 2026-10-17)
- W3C and WHATWG memorandum of understanding, 28 May 2019 (w3.org/2019/04/WHATWG-W3C-MOU.html, checked 2026-10-17)
- W3C, Using ARIA, first rule of ARIA use (w3.org/TR/using-aria/, checked 2026-10-17)
- W3C Markup Validation Service (validator.w3.org, checked 2026-10-17)
- MDN, Viewport meta element (checked 2026-10-17)
- Every code exercise was checked with a Playwright probe against a reference solution.
Data de verificação: 2026-10-17