1. Estrutura Básica de um Documento HTML
Todo documento HTML começa com a declaração <!DOCTYPE html>, que define o tipo de documento e a versão do HTML.
O documento é envolto pela tag <html>, que contém duas seções principais: <head> e <body>.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Título da Página</title>
</head>
<body>
<h1>Olá, Mundo!</h1>
<p>Este é um parágrafo de exemplo.</p>
</body>
</html>
2. Semântica HTML
Um especialista em HTML prioriza o uso de elementos semânticos para melhorar a acessibilidade e a SEO. Isso significa usar tags como <header>, <nav>, <main>, <section>, <article>, <footer>, etc., para descrever o conteúdo de forma significativa.
<header>
<h1>Meu Site</h1>
<nav>
<ul>
<li><a href="#sobre">Sobre</a></li>
<li><a href="#servicos">Serviços</a></li>
<li><a href="#contato">Contato</a></li>
</ul>
</nav>
</header>
<main>
<section id="sobre">
<h2>Sobre Nós</h2>
<p>Informações sobre a empresa.</p>
</section>
<section id="servicos">
<h2>Nossos Serviços</h2>
<p>Descrição dos serviços oferecidos.</p>
</section>
</main>
<footer>
<p>© 2023 Meu Site</p>
</footer>
3. Acessibilidade
Um especialista em HTML sempre considera a acessibilidade, garantindo que o conteúdo seja acessível a todos os usuários, incluindo aqueles com deficiências. Isso inclui o uso de atributos como alt em imagens, aria-* para melhorar a acessibilidade de elementos interativos, e a estruturação correta do conteúdo.
<img src="imagem.jpg" alt="Descrição da imagem para leitores de tela">
<button aria-label="Fechar">X</button>
4. Formulários HTML
Formulários são uma parte essencial de muitos sites. Um especialista em HTML sabe como estruturar formulários de forma eficiente, usando elementos como <form>, <input>, <label>, <textarea>, <select>, e <button>.
<form action="/enviar" method="post">
<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>
<label for="mensagem">Mensagem:</label>
<textarea id="mensagem" name="mensagem" required></textarea>
<button type="submit">Enviar</button>
</form>
5. Meta Tags e SEO
Um especialista em HTML entende a importância das meta tags para o SEO (Search Engine Optimization). Isso inclui a definição de meta charset, meta name="description", meta name="keywords", e outras tags que ajudam os motores de busca a entender o conteúdo da página.
<meta name="description" content="Descrição do site para motores de busca">
<meta name="keywords" content="HTML, CSS, JavaScript, Web Development">
<meta name="author" content="Seu Nome">
6. Boas Práticas
Validação: Sempre validar o código HTML usando ferramentas como o W3C Validator para garantir que o código esteja livre de erros.
Compatibilidade: Garantir que o HTML seja compatível com diferentes navegadores e dispositivos.
Manutenção: Escrever código limpo e bem organizado, com comentários quando necessário, para facilitar a manutenção.
7. Integração com CSS e JavaScript
Um especialista em HTML sabe como integrar corretamente CSS e JavaScript no documento HTML, usando as tags <link> e <script>.
<link rel="stylesheet" href="styles.css">
<script src="script.js" defer></script>
8. HTML5 APIs
Um especialista em HTML está familiarizado com as APIs do HTML5, como localStorage, sessionStorage, geolocation, canvas, video, e audio, que permitem criar experiências interativas e dinâmicas.
<canvas id="meuCanvas" width="200" height="100"></canvas>
<script>
var canvas = document.getElementById('meuCanvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#FF0000';
ctx.fillRect(0, 0, 150, 75);
</script>
9. Responsividade
Um especialista em HTML entende a importância de criar layouts responsivos que se adaptem a diferentes tamanhos de tela. Isso envolve o uso de meta tags como viewport e a integração com CSS para criar designs flexíveis.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
10. Performance
Um especialista em HTML considera a performance ao criar páginas web, minimizando o uso de recursos pesados, otimizando imagens e usando técnicas como lazy loading para melhorar o tempo de carregamento.
<img src="imagem.jpg" loading="lazy" alt="Descrição da imagem">
Comandos HTML
| Tag | Descrição |
|---|---|
| <!DOCTYPE html> | Define o tipo de documento como HTML5. |
| <head> | Contém metadados sobre o documento, como título, links para CSS e scripts. |
| <title> | Define o título da página, exibido na aba do navegador. |
| <body> | Contém o conteúdo visível da página. |
| <h1> | Define um cabeçalho de nível 1 (título principal). |
| <h2> | Define um cabeçalho de nível 2 (subtítulo). |
| <h3> | Define um cabeçalho de nível 3. |
| <h4> | Define um cabeçalho de nível 4. |
| <h5> | Define um cabeçalho de nível 5. |
| <h6> | Define um cabeçalho de nível 6. |
| <p> | Define um parágrafo de texto. |
| <a> | Cria um link para outra página ou recurso. |
| <img> | Exibe uma imagem na página. |
| <ul> | Cria uma lista não ordenada (com marcadores). |
| <ol> | Cria uma lista ordenada (com números ou letras). |
| <li> | Define um item de lista (usado dentro de <ul> ou <ol>). |
| <div> | Cria uma divisão ou seção genérica no documento. |
| <br> | Cria uma linha de quebra de texto (sem fechamento). |
| <hr> | Cria uma linha horizontal (usada para separar conteúdo). |
| <form> | Define um formulário para coletar dados do usuário. |
| <input> | Cria um campo de entrada de texto, e-mail, senha, etc. |
| <button> | Define um botão clicável. |
| <textarea> | Cria uma área de texto para múltiplas linhas de entrada. |
| <select> | Define uma lista suspensa (dropdown). |
| <option> | Define uma opção em uma lista suspensa (usada dentro de <select>). |
| <fieldset> | Agrupa elementos em um formulário e adiciona uma legenda. |
| <legend> | Define a legenda de um <fieldset>. |
| <table> | Cria uma tabela. |
| <tr> | Define uma linha em uma tabela. |
| <th> | Define uma célula de cabeçalho em uma tabela. |
| <td> | Define uma célula de dados em uma tabela. |
| <thead> | Define o cabeçalho de uma tabela. |
| <tbody> | Define o corpo de uma tabela. |
| <tfoot> | Define o rodapé de uma tabela. |
| <figure> | Cria um contêiner para conteúdo multimídia, como vídeos ou áudios. |
| <figcaption> | Define uma legenda para um <figure>. |
| <blockquote> | Cria um bloco de citação. |
| <q> | Define uma citação curta. |
| <em> | Define texto em itálico (ênfase). |
| <strong> | Define texto em negrito (importância). |
| <u> | Define texto sublinhado. |
| <s> | Define texto riscado. |
| <small> | Define texto pequeno (comentários ou notas). |
| <code> | Define texto como código de computador. |
| <pre> | Define texto pré-formatado (preserva espaços e quebras de linha). |
| <link> | Cria um link para um arquivo CSS externo. |
| <script> | Define um script JavaScript dentro do documento. |
| <style> | Define um estilo CSS dentro do documento. |
| <!-- --> | Define um comentário (não é exibido no navegador). |
| <header> | Define o cabeçalho da página ou seção. |
| <footer> | Define o rodapé da página ou seção. |
| <main> | Define a seção principal do conteúdo. |
| <article> | Define uma seção independente do conteúdo. |
| <section> | Define uma seção genérica do conteúdo. |
| <nav> | Define uma barra de navegação. |
| <aside> | Define conteúdo adicional ou relacionado ao conteúdo principal. |
| <details> | Define detalhes que podem ser expandidos/recolhidos pelo usuário. |
| <summary> | Define o resumo visível de um <details>. |
| <video> | Define um vídeo incorporado na página. |
| <audio> | Define um áudio incorporado na página. |
| <track> | Define uma legenda para um vídeo ou áudio. |
| <iframe> | Define um contêiner para conteúdo externo, como um mapa ou vídeo do YouTube. |
| <input type="date"> | Define um campo de entrada de data. |
| <input type="color"> | Define um campo de entrada de cor. |
| <input type="email"> | Define um campo de entrada de e-mail. |
| <input type="password"> | Define um campo de entrada de senha. |
| <input type="number"> | Define um campo de entrada de número. |
| <input type="file"> | Define um campo de entrada de arquivo. |
| <input type="search"> | Define um campo de entrada de pesquisa. |
| <input type="url"> | Define um campo de entrada de URL. |
| <input type="range"> | Define um campo de entrada de intervalo (slider). |
| <input type="time"> | Define um campo de entrada de tempo. |
| <input type="datetime-local"> | Define um campo de entrada de data e hora. |
