Estrutura Básica de um Formulário
Elemento <form>
Delimita o início e o fim de um formulário.
Sintaxe básica:
<form action="processa.php" method="post">
<!-- Campos aqui -->
</form>
Atributo | Descrição |
---|---|
| URL para onde os dados serão enviados. |
| Método de envio ( |
-
get
→ Dados visíveis na URL (pesquisas, filtros). -
post
→ Dados enviados de forma oculta (cadastros, senhas, dados sensíveis).
Elementos de Formulário
Rótulos com <label>
-
Melhora a acessibilidade e usabilidade.
-
Associado ao campo via
for
(id do input).
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome">
Campos de Entrada <input>
Tipo | Função |
---|---|
| Texto simples. |
| Senha (texto oculto). |
| Validação de e-mail. |
| Validação de URL. |
| Telefone. |
| Números (com controle de mínimo e máximo). |
| Barra deslizante. |
| Seleção de data. |
| Seleção de hora. |
| Seletor de cor. |
| Caixa de seleção (múltiplas escolhas). |
| Botões de opção (escolha única em grupo). |
| Upload de arquivos. |
| Dados ocultos. |
| Botão de envio. |
| Botão para limpar o formulário. |
| Botão genérico. |
Caixa de Texto Multilinha <textarea>
<label for="mensagem">Mensagem:</label>
<textarea id="mensagem" name="mensagem" rows="4" cols="50"></textarea>
Menu Suspenso <select>
<label for="estado">Estado:</label>
<select id="estado" name="estado">
<option value="sp">São Paulo</option>
<option value="rj">Rio de Janeiro</option>
<option value="mg">Minas Gerais</option>
</select>
Botões
<button type="submit">Enviar</button>
<button type="reset">Limpar</button>
<button type="button">Ação Personalizada</button>
Novos Tipos de Input no HTML5
-
email
,url
,tel
: Validações automáticas. -
date
,time
,datetime-local
,month
,week
: Campos de datas e horários. -
range
: Controle deslizante. -
color
: Seletor de cores.
Validações Nativas
Atributo | Descrição |
---|---|
| Torna o campo obrigatório. |
| Limita valores numéricos ou datas. |
| Limita quantidade de caracteres. |
| Expressão regular para validação personalizada. |
| Define incremento numérico (ex.: 0.5, 1). |
| Texto temporário no campo. |
| Somente leitura. |
| Desabilita o campo. |
Exemplo de validação com pattern
:
<input type="text" name="cpf" pattern="\d{3}\.\d{3}\.\d{3}-\d{2}"
placeholder="000.000.000-00" required>
Agrupamento de Campos
<fieldset>
e <legend>
Agrupa campos relacionados.
<fieldset>
<legend>Informações Pessoais</legend>
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</fieldset>
Exemplo Prático Completo
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulário de Contato</title>
</head>
<body>
<h1>Formulário de Contato</h1>
<form action="enviar.php" method="post">
<fieldset>
<legend>Informações Pessoais</legend>
<label for="nome">Nome:</label><br>
<input type="text" id="nome" name="nome" required><br><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email" required><br><br>
<label for="telefone">Telefone:</label><br>
<input type="tel" id="telefone" name="telefone"><br><br>
<label for="estado">Estado:</label><br>
<select id="estado" name="estado">
<option value="sp">São Paulo</option>
<option value="rj">Rio de Janeiro</option>
<option value="mg">Minas Gerais</option>
</select><br><br>
</fieldset>
<fieldset>
<legend>Mensagem</legend>
<label for="mensagem">Sua Mensagem:</label><br>
<textarea id="mensagem" name="mensagem" rows="5" cols="50" required></textarea><br><br>
</fieldset>
<button type="submit">Enviar</button>
<button type="reset">Limpar</button>
</form>
</body>
</html>
Melhores Práticas para Formulários
-
Utilize
<label>
sempre associado aos campos (for
eid
iguais). -
Prefira validações nativas com
required
,pattern
e tipos comoemail
eurl
. -
Utilize
fieldset
elegend
para melhorar a organização visual e acessibilidade. -
Se possível, combine validação HTML5 com validação no backend.
-
Utilize placeholders para sugerir formatos, mas nunca os substitua pelo uso de
<label>
.
Conclusão
Formulários no HTML5 são muito mais poderosos, acessíveis e seguros. As validações nativas ajudam a evitar erros comuns, melhoram a experiência do usuário e reduzem o trabalho no backend.
Próximo Passo
No próximo módulo, vamos trabalhar com Elementos Gráficos e Interativos no HTML5, utilizando recursos como <canvas>
, <svg>
, e <iframe>
para criar gráficos, desenhos e incorporar outros conteúdos na página.