Skip to main content
Mediaweb Logo

Mediaweb

Html Guia

Compreendendo Tags e Atributos HTML: Guia Completo

Aprenda tudo sobre tags HTML e atributos. Descubra como usar corretamente os elementos HTML, seus atributos e as melhores práticas para desenvolvimento web.

September 3, 2025
9 min de leitura
Por Team Mediaweb
HTML
Tags
Atributos
Desenvolvimento Web
Tutorial

Compreendendo Tags e Atributos HTML: Guia Completo

As tags HTML e seus atributos são os blocos fundamentais de toda página web. Compreender como funcionam, como usá-los corretamente e como aproveitar ao máximo seu potencial é essencial para se tornar um desenvolvedor web competente. Este guia abrangente fornecerá todo o conhecimento necessário para dominar tags e atributos HTML.

O que são Tags HTML?

As tags HTML são elementos de marcação que definem a estrutura e o significado do conteúdo de uma página web. Cada tag tem um propósito específico e comunica ao navegador como interpretar e exibir o conteúdo contido nela.

Anatomia de uma Tag HTML

Uma tag HTML é composta por vários elementos:

<nometag atributo="valor">Conteúdo</nometag>
  • Colchetes angulares: < e > delimitam a tag
  • Nome da tag: Identifica o tipo de elemento
  • Atributos: Fornecem informações adicionais (opcionais)
  • Conteúdo: O texto ou outros elementos contidos na tag
  • Tag de fechamento: Inclui uma barra / antes do nome da tag

Tipos de Tags HTML

As tags HTML se dividem em duas categorias principais:

1. Tags Container (Contêineres)

Essas tags envolvem conteúdo e requerem tanto uma tag de abertura quanto uma de fechamento:

<p>Este é um parágrafo.</p>
<h1>Este é um título.</h1>
<div>Este é um contêiner genérico.</div>

2. Tags Vazias (Self-Closing)

Essas tags não contêm conteúdo e se fecham automaticamente:

<img src="imagem.jpg" alt="Descrição">
<br>
<hr>
<input type="text" name="nome">

Classificação das Tags HTML por Função

Tags Estruturais

Definem a estrutura geral do documento:

<!DOCTYPE html>
<html>
<head>
    <title>Título da Página</title>
    <meta charset="UTF-8">
</head>
<body>
    <header>Cabeçalho</header>
    <main>Conteúdo principal</main>
    <footer>Rodapé</footer>
</body>
</html>

Tags Semânticas HTML5

Fornecem significado ao conteúdo:

<article>Artigo independente</article>
<section>Seção de conteúdo</section>
<nav>Menu de navegação</nav>
<aside>Conteúdo lateral</aside>
<figure>Figura com legenda</figure>
<figcaption>Legenda da figura</figcaption>

Tags de Texto

Formatam e estruturam o texto:

<h1>Título de primeiro nível</h1>
<h2>Título de segundo nível</h2>
<p>Parágrafo de texto</p>
<strong>Texto importante</strong>
<em>Texto enfatizado</em>
<mark>Texto destacado</mark>
<small>Texto pequeno</small>

Tags de Lista

Criam listas ordenadas e não ordenadas:

<!-- Lista não ordenada -->
<ul>
    <li>Primeiro item</li>
    <li>Segundo item</li>
    <li>Terceiro item</li>
</ul>

<!-- Lista ordenada -->
<ol>
    <li>Primeiro passo</li>
    <li>Segundo passo</li>
    <li>Terceiro passo</li>
</ol>

<!-- Lista de definições -->
<dl>
    <dt>HTML</dt>
    <dd>HyperText Markup Language</dd>
    <dt>CSS</dt>
    <dd>Cascading Style Sheets</dd>
</dl>

Tags Multimídia

Incorporam conteúdo multimídia:

<img src="foto.jpg" alt="Descrição da foto">
<video controls>
    <source src="video.mp4" type="video/mp4">
    Seu navegador não suporta a tag video.
</video>
<audio controls>
    <source src="audio.mp3" type="audio/mpeg">
    Seu navegador não suporta a tag audio.
</audio>

Tags de Tabela

Criam tabelas estruturadas:

<table>
    <thead>
        <tr>
            <th>Nome</th>
            <th>Idade</th>
            <th>Cidade</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>João</td>
            <td>30</td>
            <td>São Paulo</td>
        </tr>
        <tr>
            <td>Maria</td>
            <td>25</td>
            <td>Rio de Janeiro</td>
        </tr>
    </tbody>
</table>

Tags de Formulário

Criam formulários interativos:

<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" rows="4"></textarea>
    
    <button type="submit">Enviar</button>
</form>

O que são Atributos HTML?

Os atributos HTML fornecem informações adicionais sobre as tags e modificam seu comportamento ou aparência. Eles são sempre especificados na tag de abertura e seguem o formato nome="valor".

Sintaxe dos Atributos

<tag atributo1="valor1" atributo2="valor2">conteúdo</tag>

Regras para Atributos

  1. Sempre na tag de abertura: Os atributos vão apenas na tag de abertura
  2. Formato nome-valor: Cada atributo tem um nome e um valor
  3. Aspas: Os valores devem estar entre aspas
  4. Espaços: Os atributos são separados por espaços
  5. Case-insensitive: Os nomes dos atributos não são sensíveis a maiúsculas

Atributos HTML Globais

Esses atributos podem ser usados com qualquer tag HTML:

id

Fornece um identificador único para o elemento:

<div id="cabecalho-principal">Conteúdo único</div>
<p id="paragrafo-importante">Texto importante</p>

Características do atributo id:

  • Deve ser único em toda a página
  • Usado para CSS e JavaScript
  • Pode ser usado como âncora para links

class

Atribui uma ou mais classes CSS ao elemento:

<p class="texto-vermelho">Texto com classe única</p>
<div class="container grande centralizado">Elemento com múltiplas classes</div>

Características do atributo class:

  • Pode ser reutilizado em múltiplos elementos
  • Suporta múltiplas classes separadas por espaços
  • Usado principalmente para estilização CSS

style

Aplica estilos CSS inline ao elemento:

<p style="color: blue; font-size: 18px;">Texto estilizado</p>
<div style="background-color: yellow; padding: 10px;">Container colorido</div>

Nota: É preferível usar CSS externos em vez de estilos inline.

title

Fornece informações adicionais mostradas ao passar o mouse:

<p title="Esta é uma dica">Passe o mouse aqui</p>
<img src="foto.jpg" alt="Foto" title="Foto tirada em 2025">

lang

Especifica o idioma do conteúdo do elemento:

<html lang="pt-BR">
<p lang="en">This paragraph is in English</p>
<span lang="fr">Ce texte est en français</span>

data-*

Atributos personalizados para armazenar dados:

<div data-user-id="123" data-role="admin">Usuário</div>
<button data-action="delete" data-confirm="true">Excluir</button>

Atributos Específicos para Tags

Atributos para Imagens

<img src="caminho/imagem.jpg" 
     alt="Descrição da imagem"
     width="300"
     height="200"
     loading="lazy"
     title="Título da imagem">

Atributos principais:

  • src: Caminho da imagem (obrigatório)
  • alt: Texto alternativo (obrigatório para acessibilidade)
  • width/height: Dimensões em pixels
  • loading: Carregamento lazy ou eager
<a href="https://www.exemplo.com"
   target="_blank"
   rel="noopener noreferrer"
   title="Visite Exemplo.com"
   download="arquivo.pdf">
   Link externo
</a>

Atributos principais:

  • href: Destino do link (obrigatório)
  • target: Onde abrir o link (_blank, _self, _parent, _top)
  • rel: Relação com a página de destino
  • download: Força o download do arquivo

Atributos para Formulários

<form action="/enviar" method="post" enctype="multipart/form-data">
    <input type="text" 
           name="usuario" 
           id="usuario"
           placeholder="Digite seu usuário"
           required
           minlength="3"
           maxlength="20"
           pattern="[a-zA-Z0-9]+"
           autocomplete="username">
    
    <input type="email" 
           name="email"
           required
           placeholder="email@exemplo.com">
    
    <input type="password"
           name="senha"
           required
           minlength="8">
    
    <button type="submit">Enviar</button>
</form>

Atributos para input:

  • type: Tipo de input (text, email, password, etc.)
  • name: Nome do campo para envio
  • placeholder: Texto de exemplo
  • required: Campo obrigatório
  • pattern: Expressão regular para validação

Atributos para Vídeo e Áudio

<video controls autoplay muted loop width="640" height="360">
    <source src="video.mp4" type="video/mp4">
    <source src="video.webm" type="video/webm">
    Seu navegador não suporta a tag video.
</video>

<audio controls preload="metadata">
    <source src="audio.mp3" type="audio/mpeg">
    <source src="audio.ogg" type="audio/ogg">
    Seu navegador não suporta a tag audio.
</audio>

Atributos multimídia:

  • controls: Mostra controles de reprodução
  • autoplay: Inicia reprodução automaticamente
  • muted: Áudio desabilitado
  • loop: Reprodução em loop
  • preload: Como pré-carregar o arquivo (none, metadata, auto)

Atributos Booleanos

Alguns atributos são booleanos, ou seja, sua presença indica "verdadeiro" e sua ausência indica "falso":

<input type="checkbox" checked>
<input type="text" required disabled>
<video controls autoplay muted>
<option selected>Opção selecionada</option>

Atributos booleanos comuns:

  • checked: Para checkbox e radio button
  • selected: Para opções de select
  • disabled: Desabilita o elemento
  • required: Campo obrigatório
  • readonly: Apenas leitura
  • multiple: Seleção múltipla

Melhores Práticas para Tags e Atributos

1. Use HTML Semântico

<!-- Bom -->
<article>
    <header>
        <h1>Título do Artigo</h1>
        <time datetime="2025-09-03">3 de Setembro de 2025</time>
    </header>
    <p>Conteúdo do artigo...</p>
</article>

<!-- Evite -->
<div>
    <div>Título do Artigo</div>
    <div>3 de Setembro de 2025</div>
    <div>Conteúdo do artigo...</div>
</div>

2. Sempre Inclua Atributos Essenciais

<!-- Sempre inclua alt para imagens -->
<img src="foto.jpg" alt="Descrição significativa">

<!-- Sempre inclua for nos labels -->
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome">

3. Use Nomes Descritivos para ID e Classes

<!-- Bom -->
<div id="menu-navegacao" class="menu-horizontal">
<p class="texto-introducao">

<!-- Evite -->
<div id="div1" class="red">
<p class="p1">

4. Mantenha Consistência

<!-- Use sempre aspas -->
<img src="foto.jpg" alt="Descrição">

<!-- Use convenções de nomenclatura consistentes -->
<div class="container-principal">
<div class="container-secundario">

5. Valide Seu HTML

Use ferramentas de validação para garantir que seu HTML esteja correto:

  • W3C Markup Validator
  • Ferramentas de Desenvolvimento do Navegador
  • Extensões para editores de código

Erros Comuns a Evitar

1. Atributos Sem Aspas

<!-- Incorreto -->
<img src=foto.jpg alt=Minha foto>

<!-- Correto -->
<img src="foto.jpg" alt="Minha foto">

2. IDs Duplicados

<!-- Incorreto -->
<div id="conteudo">Primeira div</div>
<div id="conteudo">Segunda div</div>

<!-- Correto -->
<div id="conteudo-1">Primeira div</div>
<div id="conteudo-2">Segunda div</div>

3. Atributos na Tag de Fechamento

<!-- Incorreto -->
<p class="importante">Texto</p class="importante">

<!-- Correto -->
<p class="importante">Texto</p>

4. Valores de Atributos Booleanos Incorretos

<!-- Incorreto -->
<input type="checkbox" checked="false">

<!-- Correto -->
<input type="checkbox">
<input type="checkbox" checked>

Tags HTML5 Modernas

HTML5 introduziu muitas novas tags semânticas:

Elementos de Estrutura

<header>Cabeçalho da página ou seção</header>
<nav>Menu de navegação</nav>
<main>Conteúdo principal da página</main>
<section>Seção temática de conteúdo</section>
<article>Conteúdo independente</article>
<aside>Conteúdo relacionado ou sidebar</aside>
<footer>Rodapé</footer>

Elementos de Conteúdo

<figure>
    <img src="grafico.png" alt="Gráfico de vendas">
    <figcaption>Gráfico de vendas de 2025</figcaption>
</figure>

<details>
    <summary>Clique para expandir</summary>
    <p>Conteúdo oculto que se revela ao clicar.</p>
</details>

<mark>Texto destacado</mark>
<time datetime="2025-09-03">3 de Setembro de 2025</time>

Novos Tipos de Input

<input type="email" placeholder="email@exemplo.com">
<input type="url" placeholder="https://www.exemplo.com">
<input type="tel" placeholder="+55 11 99999-9999">
<input type="date">
<input type="time">
<input type="color">
<input type="range" min="0" max="100">
<input type="number" min="1" max="10">

Acessibilidade e Atributos ARIA

Para melhorar a acessibilidade, use atributos ARIA:

<button aria-label="Fechar janela de diálogo" aria-expanded="false">
    <span aria-hidden="true">&times;</span>
</button>

<nav aria-label="Menu principal">
    <ul role="menubar">
        <li role="menuitem"><a href="/">Início</a></li>
        <li role="menuitem"><a href="/sobre">Sobre</a></li>
    </ul>
</nav>

<div role="alert" aria-live="polite">
    Mensagem de status importante
</div>

Microdata e Dados Estruturados

Use microdata para fornecer informações estruturadas:

<article itemscope itemtype="http://schema.org/Article">
    <h1 itemprop="headline">Título do Artigo</h1>
    <p>Escrito por <span itemprop="author">João Silva</span></p>
    <time itemprop="datePublished" datetime="2025-09-03">3 de Setembro de 2025</time>
    <div itemprop="articleBody">
        <p>Conteúdo do artigo...</p>
    </div>
</article>

Ferramentas para Trabalhar com Tags e Atributos

Editores de Código Recomendados

  1. Visual Studio Code: Com extensões HTML
  2. Sublime Text: Leve e rápido
  3. WebStorm: IDE completo para desenvolvimento web
  4. Atom: Open source e personalizável

Extensões Úteis

  • HTML Snippets: Autocompletar para tags HTML
  • Auto Rename Tag: Renomeia automaticamente tags de abertura e fechamento
  • HTML CSS Support: Suporte para classes e IDs CSS
  • Live Server: Servidor de desenvolvimento local

Ferramentas de Validação

  • W3C Markup Validator: https://validator.w3.org/
  • HTML5 Validator: Validação específica para HTML5
  • DevTools do Navegador: Ferramentas integradas nos navegadores

Exemplos Práticos Avançados

Exemplo 1: Card de Produto

<article class="product-card" itemscope itemtype="http://schema.org/Product">
    <header>
        <h2 itemprop="name">Smartphone ABC</h2>
        <img src="smartphone.jpg" 
             alt="Smartphone ABC cor preta"
             itemprop="image"
             loading="lazy">
    </header>
    
    <div class="product-info">
        <p itemprop="description">
            Smartphone de última geração com câmera avançada.
        </p>
        
        <div class="price" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
            <span itemprop="price" content="599">R$599</span>
            <meta itemprop="priceCurrency" content="BRL">
            <meta itemprop="availability" content="http://schema.org/InStock">
        </div>
        
        <button type="button" 
                class="btn-primary"
                data-product-id="123"
                aria-label="Adicionar Smartphone ABC ao carrinho">
            Adicionar ao Carrinho
        </button>
    </div>
</article>

Exemplo 2: Formulário de Contato Avançado

<form class="contact-form" 
      action="/contato" 
      method="post" 
      novalidate
      aria-labelledby="contact-title">
    
    <h2 id="contact-title">Entre em Contato</h2>
    
    <fieldset>
        <legend>Informações Pessoais</legend>
        
        <div class="form-group">
            <label for="first-name">Nome *</label>
            <input type="text" 
                   id="first-name"
                   name="firstName"
                   required
                   aria-describedby="first-name-error"
                   autocomplete="given-name">
            <div id="first-name-error" class="error-message" aria-live="polite"></div>
        </div>
        
        <div class="form-group">
            <label for="email">Email *</label>
            <input type="email" 
                   id="email"
                   name="email"
                   required
                   aria-describedby="email-error email-help"
                   autocomplete="email">
            <div id="email-help" class="help-text">
                Usaremos seu email apenas para responder sua mensagem.
            </div>
            <div id="email-error" class="error-message" aria-live="polite"></div>
        </div>
    </fieldset>
    
    <fieldset>
        <legend>Mensagem</legend>
        
        <div class="form-group">
            <label for="subject">Assunto</label>
            <select id="subject" name="subject" aria-describedby="subject-help">
                <option value="">Selecione um assunto</option>
                <option value="info">Solicitação de informações</option>
                <option value="support">Suporte técnico</option>
                <option value="feedback">Feedback</option>
            </select>
            <div id="subject-help" class="help-text">
                Selecione o assunto mais apropriado para sua solicitação.
            </div>
        </div>
        
        <div class="form-group">
            <label for="message">Mensagem *</label>
            <textarea id="message" 
                      name="message"
                      rows="5"
                      required
                      aria-describedby="message-counter"
                      maxlength="500"></textarea>
            <div id="message-counter" class="character-counter">0/500 caracteres</div>
        </div>
    </fieldset>
    
    <div class="form-actions">
        <button type="submit" class="btn-primary">
            Enviar Mensagem
        </button>
        <button type="reset" class="btn-secondary">
            Limpar
        </button>
    </div>
</form>

Conclusão

O domínio das tags HTML e atributos é fundamental para criar páginas web bem estruturadas, acessíveis e semanticamente corretas. Compreender não apenas como usar esses elementos, mas também quando e por que usá-los, permitirá que você desenvolva sites de qualidade profissional.

Lembre-se de que o HTML está em constante evolução. Novas tags e atributos são adicionados regularmente, então é importante manter-se atualizado com as últimas especificações e melhores práticas. Pratique regularmente, experimente com diferentes tags e atributos, e não hesite em consultar a documentação oficial quando tiver dúvidas.

O objetivo final é criar código HTML que seja não apenas funcional, mas também semântico, acessível e manutenível. Com uma sólida compreensão das tags e atributos HTML, você terá as bases necessárias para construir experiências web excepcionais para todos os usuários.

Continue praticando, experimente com projetos reais e lembre-se de que todo especialista já foi um iniciante. Sua jornada no HTML está apenas começando, e as possibilidades são infinitas!

Última atualização: September 10, 2025