Estrutura de uma página HTML moderna
Uma página HTML moderna geralmente inclui:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo Moderno</title>
<meta name="description" content="Descrição da página para SEO.">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!-- Conteúdo principal -->
</body>
</html>
Principais atributos globais
Os atributos globais podem ser usados em quase todas as tags HTML:
id,class,style,title,tabindex,hidden,draggable,lang,data-*
Diferença entre HTML e XHTML
- HTML é mais flexível, não exige fechamento de todas as tags e aceita letras maiúsculas/minúsculas.
- XHTML é mais rigoroso, exige fechamento de todas as tags, atributos entre aspas e letras minúsculas.
Boas práticas de organização de código
- Indente o código corretamente.
- Use comentários para explicar trechos importantes:
<!-- Este é um comentário em HTML -->
- Separe o conteúdo (HTML), estilo (CSS) e comportamento (JavaScript).
Ferramentas úteis para desenvolvedores HTML
- Can I use — Verifique compatibilidade de recursos HTML/CSS/JS nos navegadores.
- HTML Reference — Referência visual de todas as tags HTML.
- A11Y Project — Recursos e dicas de acessibilidade.
title: "O que é HTML?" description: "Uma visão geral sobre HTML, CSS e JavaScript, incluindo boas práticas e convenções."

HTML (HyperText Markup Language) é a linguagem de marcação padrão usada para criar páginas web. Ele define a estrutura básica de um site por meio de elementos que organizam o conteúdo, como títulos, parágrafos, imagens, links e tabelas.
Características do HTML
HTML serve para estruturar o conteúdo, não para realizar cálculos ou lógica como uma linguagem de programação faria.
Todos os sites na internet utilizam HTML como base para sua estrutura.
- CSS (Cascading Style Sheets): responsável pelo estilo visual da página (cores, fontes, espaçamentos).
- JavaScript: adiciona interatividade, como menus dinâmicos, animações, validações de formulário, entre outros.
Tags de Bloco vs Tags Inline
No HTML, os elementos podem ser classificados em dois grandes grupos:
- Tags de bloco: ocupam toda a largura disponível e iniciam uma nova linha. Exemplos:
<div>,<p>,<h1>,<section>,<header>,<footer>,<main>,<article>,<nav>,<ul>,<li>. - Tags inline: ocupam apenas o espaço necessário ao seu conteúdo e não iniciam nova linha. Exemplos:
<span>,<a>,<strong>,<em>,<img>,<input>,<label>,<mark>,<abbr>.
Exemplo prático:
<p>Esse é um <strong>texto em negrito</strong> e um <a href="#">link</a> dentro de um parágrafo.</p>
Dicas de SEO e Acessibilidade
- Use elementos semânticos para ajudar mecanismos de busca a entender o conteúdo.
- Sempre preencha o atributo
altem imagens. - Utilize títulos (
<h1>,<h2>, ...) de forma hierárquica. - Prefira
<button>para ações e<a>para navegação. - Use atributos ARIA para melhorar a acessibilidade.
Curiosidades
- O HTML5 trouxe suporte nativo para áudio, vídeo, gráficos (SVG, Canvas) e APIs como geolocalização e armazenamento local.
- O HTML é mantido pelo W3C e WHATWG.
- O nome "HyperText" refere-se à capacidade de criar links entre páginas e recursos.
Links Úteis
História do HTML
O HTML foi criado em 1991 por Tim Berners-Lee, com o objetivo de facilitar a troca de documentos científicos entre pesquisadores. Desde então, passou por diversas atualizações:
- HTML 2.0 (1995): primeira especificação padronizada.
- HTML 4.01 (1999): trouxe avanços significativos em estrutura e estilo.
- HTML5 (2014): versão atual, com novos elementos semânticos, suporte nativo a áudio, vídeo, gráficos e APIs avançadas.
Exemplo de um documento HTML básico
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Meu Primeiro HTML</title>
</head>
<body>
<h1>Olá, Mundo!</h1>
<p>Esse é um documento HTML básico.</p>
</body>
</html>
Esse exemplo mostra a estrutura mínima de um documento HTML válido, com:
<!DOCTYPE html>: indica ao navegador que o documento usa HTML5.<html lang="pt-BR">: define o idioma do conteúdo.<head>: contém metadados, título e configurações da página.<body>: área onde o conteúdo visível da página é colocado.
Boas Práticas em HTML
Use elementos semânticos
Elementos semânticos são tags HTML que têm um significado claro e específico, tanto para os desenvolvedores quanto para navegadores, leitores de tela e mecanismos de busca. Eles descrevem a função do conteúdo que envolvem, tornando o código mais organizado, acessível e fácil de manter.
Por que usar elementos semânticos?
- Melhor acessibilidade: tecnologias assistivas, como leitores de tela, entendem melhor a estrutura da página e ajudam usuários com deficiência visual a navegar com mais facilidade.
- SEO (Search Engine Optimization): mecanismos de busca interpretam melhor o conteúdo da página e classificam os resultados com mais precisão.
- Manutenção facilitada: o código se torna mais legível e compreensível para qualquer desenvolvedor que venha a trabalhar no projeto.
Exemplos de elementos semânticos
| Elemento | Função |
|---|---|
<header> | Cabeçalho da página ou de uma seção. Pode conter logotipo, menu, etc. |
<nav> | Área de navegação com links internos ou externos. |
<main> | Conteúdo principal da página. Deve ser único e conter o foco do site. |
<section> | Agrupamento temático de conteúdo relacionado. |
<article> | Conteúdo independente, como posts de blog, notícias, etc. |
<aside> | Conteúdo complementar (ex: barra lateral, widgets, anúncios). |
<footer> | Rodapé da página ou de uma seção. Pode conter contatos, créditos, etc. |
Exemplo prático
<body>
<header>
<h1>Meu Blog</h1>
<nav>
<ul>
<li><a href="#home">Início</a></li>
<li><a href="#sobre">Sobre</a></li>
</ul>
</nav>
</header>
<main>
<section>
<h2>Últimas Postagens</h2>
<article>
<h3>O que é HTML?</h3>
<p>HTML é uma linguagem de marcação usada na web...</p>
</article>
<article>
<h3>Entendendo CSS</h3>
<p>CSS é responsável pela aparência dos elementos...</p>
</article>
</section>
<aside>
<h4>Assine a newsletter</h4>
</aside>
</main>
<footer>
<p>© 2025 Marcos Nathanael. Todos os direitos reservados.</p>
</footer>
</body>
Notas:
Algumas Dicas:
- Use
<div>apenas quando nenhum elemento semântico se aplicar. - Evite usar tags genéricas em excesso. Prefira:
<section>em vez de<div class="section"><footer>em vez de<div class="footer">
O HTML usa "Marcação" para anotar texto, imagem e outros conteúdos para exibição em um navegador da Web. A marcação HTML inclui "elementos" especiais, como <head>, <title>, <body>, <header>, <footer>, <article>, <section>, <p>, <div>, <span>, <img>, <aside>, <audio>, <canvas>, <datalist>, <details>, <embed>, <nav>, <output>, <progress>, <video>, <ul>, <ol>, <li> e muitos outros.
Recursos Avançados do HTML
O que é CORS?
CORS (Cross-Origin Resource Sharing) é um mecanismo de segurança implementado pelos navegadores que controla o acesso a recursos entre diferentes origens (domínios).
Por que o CORS existe?
Quando uma aplicação web (ex: meusite.com) tenta fazer uma requisição para outra origem (ex: api.outrasite.com), o navegador bloqueia essa ação por padrão, como medida de segurança. O CORS serve para permitir explicitamente esse tipo de comunicação — quando for seguro e autorizado.
Como funciona?
- Quando um site tenta buscar dados de outra origem, o navegador envia uma requisição especial chamada
preflight(com o métodoOPTIONS). - O servidor de destino precisa responder com cabeçalhos CORS, como:
Access-Control-Allow-Origin: https://meusite.com
- Se a origem estiver permitida, o navegador permite que a resposta continue. Caso contrário, bloqueia a requisição.
Cabeçalhos mais comuns no CORS
- Access-Control-Allow-Origin: define quais domínios podem acessar o recurso.
- Access-Control-Allow-Methods: lista os métodos HTTP permitidos (GET, POST, PUT, etc).
- Access-Control-Allow-Headers: especifica os cabeçalhos que podem ser usados na requisição.
Exemplo prático
- Suponha que seu frontend (em http://localhost:3000) precise acessar uma API hospedada em https://api.meuservidor.com. A resposta do servidor da API deve incluir:
Access-Control-Allow-Origin: http://localhost:3000
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type
Sem isso, o navegador bloqueará a resposta.
Notas:
Importante
- O CORS não é um mecanismo de segurança do lado do cliente, mas sim do lado do servidor.
- Servidores mal configurados podem causar erros como:
Access to fetch at `https://api.exemplo.com'
from origin 'http://localhost:3000' has been blocked by CORS policy.
Após aprender a estrutura básica do HTML, é importante conhecer recursos mais avançados que permitem criar páginas web modernas, acessíveis e funcionais.
Elementos Semânticos Avançados
Além dos elementos como <header>, <main>, <section> e <footer>, existem outros com papéis específicos:
<figure>e<figcaption>: utilizados para agrupar uma imagem com sua legenda.<mark>: destaca trechos de texto como marca-texto.<time>: representa uma data ou horário, útil para eventos, posts, etc.<details>e<summary>: criam um bloco de conteúdo expandível.<dialog>: permite criar janelas modais de forma nativa.
Exemplo de <details>:
<details>
<summary>Leia mais</summary>
<p>Este é um conteúdo adicional que pode ser expandido.</p>
</details>
Formulários Avançados
O HTML5 trouxe novos tipos de input que melhoram a experiência do usuário e a validação automática:
type="email",type="url",type="number",type="range",type="color",type="date", etc.- Atributos como
required,pattern,min,max,step, eplaceholderajudam na validação e acessibilidade. - O atributo autocomplete sugere preenchimento com base em dados anteriores.
<form>
<label for="email">E-mail:</label>
<input type="email" id="email" required autocomplete="email" />
</form>
Acessibilidade (A11Y)
HTML fornece suporte nativo à acessibilidade. Algumas práticas importantes incluem:
- Usar aria-label, aria-hidden, role e outros atributos ARIA para tornar interfaces compreensíveis para leitores de tela.
- Garantir que cada
<label>esteja associado ao respectivo<input>. - Usar
altem imagens. - Navegação por teclado: certifique-se de que os elementos interativos (como links e botões) estejam acessíveis com Tab.