Skip to main content
Mediaweb Logo

Mediaweb

Html Guia

Listas em HTML: Listas Ordenadas, Não Ordenadas e de Definição Explicadas

Domine listas HTML com este guia completo cobrindo elementos ul, ol e dl, técnicas de aninhamento, estilização com CSS e melhores práticas de acessibilidade.

September 4, 2025
9 min de leitura
HTML
listas
ul
ol
dl
listas aninhadas
estilização CSS

Entendendo os Tipos de Lista HTML

HTML fornece três tipos principais de listas, cada um servindo a propósitos diferentes:

  1. Listas Não Ordenadas (<ul>) - Para itens sem uma ordem específica
  2. Listas Ordenadas (<ol>) - Para itens sequenciais ou classificados
  3. Listas de Definição (<dl>) - Para pares termo-definição

Vamos explorar cada tipo em detalhes.

O Elemento <ul> para Listas com Marcadores

Listas não ordenadas são perfeitas para agrupar itens relacionados onde a ordem não importa. São comumente usadas para menus de navegação, listas de recursos e organização geral de conteúdo.

Sintaxe Básica da Lista Não Ordenada

<ul>
  <li>Primeiro item</li>
  <li>Segundo item</li>
  <li>Terceiro item</li>
</ul>

Exemplos do Mundo Real

Menu de Navegação:

<nav>
  <ul>
    <li><a href="/">Início</a></li>
    <li><a href="/sobre">Sobre</a></li>
    <li><a href="/servicos">Serviços</a></li>
    <li><a href="/contato">Contato</a></li>
  </ul>
</nav>

Lista de Recursos:

<ul>
  <li>Design responsivo</li>
  <li>Tempos de carregamento rápidos</li>
  <li>Otimizado para SEO</li>
  <li>Compatível com dispositivos móveis</li>
  <li>Compatível com todos os navegadores</li>
</ul>

Lista de Compras:

<ul>
  <li>Leite</li>
  <li>Pão</li>
  <li>Ovos</li>
  <li>Queijo</li>
  <li>Maçãs</li>
</ul>

Atributos de Lista Não Ordenada

Embora o CSS moderno lide com a maioria da estilização, você ainda pode usar o atributo type:

<ul type="disc">   <!-- Padrão: círculos preenchidos -->
<ul type="circle"> <!-- Círculos vazios -->
<ul type="square"> <!-- Quadrados preenchidos -->

Nota: O atributo type está obsoleto no HTML5. Use CSS em vez disso para estilização.

O Elemento <ol> para Listas Numeradas

Listas ordenadas são ideais quando a sequência ou classificação dos itens importa. São perfeitas para instruções, rankings e processos passo a passo.

Sintaxe Básica da Lista Ordenada

<ol>
  <li>Primeiro passo</li>
  <li>Segundo passo</li>
  <li>Terceiro passo</li>
</ol>

Atributos de Lista Ordenada

Atributo Start:

<ol start="5">
  <li>Quinto item</li>
  <li>Sexto item</li>
  <li>Sétimo item</li>
</ol>

Atributo Type:

<ol type="1">  <!-- 1, 2, 3 (padrão) -->
<ol type="A">  <!-- A, B, C -->
<ol type="a">  <!-- a, b, c -->
<ol type="I">  <!-- I, II, III -->
<ol type="i">  <!-- i, ii, iii -->

Atributo Reversed:

<ol reversed>
  <li>Terceiro lugar</li>
  <li>Segundo lugar</li>
  <li>Primeiro lugar</li>
</ol>
<!-- Exibe como: 3. Terceiro lugar, 2. Segundo lugar, 1. Primeiro lugar -->

Exemplos do Mundo Real

Instruções de Receita:

<h3>Como Fazer Cookies de Chocolate</h3>
<ol>
  <li>Pré-aqueça o forno a 190°C</li>
  <li>Misture farinha, bicarbonato e sal em uma tigela</li>
  <li>Bata manteiga e açúcares em uma tigela separada</li>
  <li>Adicione ovos e baunilha à mistura de manteiga</li>
  <li>Incorpore gradualmente a mistura de farinha</li>
  <li>Adicione gotas de chocolate</li>
  <li>Coloque colheradas em assadeiras não untadas</li>
  <li>Asse por 9-11 minutos até dourar</li>
</ol>

Top 5 Linguagens de Programação:

<h3>Linguagens de Programação Mais Populares 2024</h3>
<ol>
  <li>JavaScript</li>
  <li>Python</li>
  <li>Java</li>
  <li>TypeScript</li>
  <li>C#</li>
</ol>

Passos de Instalação:

<h3>Guia de Instalação de Software</h3>
<ol>
  <li>Baixe o instalador do nosso site</li>
  <li>Execute o instalador como administrador</li>
  <li>Aceite o acordo de licença</li>
  <li>Escolha o diretório de instalação</li>
  <li>Selecione componentes para instalar</li>
  <li>Clique em "Instalar" e aguarde a conclusão</li>
  <li>Reinicie seu computador quando solicitado</li>
</ol>

Aninhando Listas

Você pode aninhar listas dentro de outras listas para criar estruturas hierárquicas. Isso é útil para criar submenus, esboços detalhados e estruturas organizacionais complexas.

Aninhando Listas Não Ordenadas

<ul>
  <li>Desenvolvimento Web
    <ul>
      <li>Frontend
        <ul>
          <li>HTML</li>
          <li>CSS</li>
          <li>JavaScript</li>
        </ul>
      </li>
      <li>Backend
        <ul>
          <li>Node.js</li>
          <li>Python</li>
          <li>PHP</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Desenvolvimento Mobile
    <ul>
      <li>iOS</li>
      <li>Android</li>
      <li>React Native</li>
    </ul>
  </li>
</ul>

Aninhando Listas Ordenadas

<ol>
  <li>Fase de Planejamento
    <ol type="a">
      <li>Definir requisitos</li>
      <li>Criar wireframes</li>
      <li>Projetar mockups</li>
    </ol>
  </li>
  <li>Fase de Desenvolvimento
    <ol type="a">
      <li>Configurar ambiente de desenvolvimento</li>
      <li>Construir funcionalidade principal</li>
      <li>Implementar interface do usuário</li>
    </ol>
  </li>
  <li>Fase de Testes
    <ol type="a">
      <li>Testes unitários</li>
      <li>Testes de integração</li>
      <li>Testes de aceitação do usuário</li>
    </ol>
  </li>
</ol>

Listas Aninhadas Mistas

<ol>
  <li>Opções de Café da Manhã
    <ul>
      <li>Cereais
        <ul>
          <li>Flocos de milho</li>
          <li>Aveia</li>
          <li>Granola</li>
        </ul>
      </li>
      <li>Opções Quentes
        <ul>
          <li>Panquecas</li>
          <li>Waffles</li>
          <li>Rabanada</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Opções de Almoço
    <ul>
      <li>Sanduíches</li>
      <li>Saladas</li>
      <li>Sopas</li>
    </ul>
  </li>
</ol>

Usando <dl>, <dt> e <dd> para Definições

Listas de definição são perfeitas para glossários, FAQs, especificações de produtos e qualquer conteúdo que emparelhe termos com suas descrições.

Estrutura da Lista de Definição

<dl>
  <dt>Termo 1</dt>
  <dd>Definição ou descrição do termo 1</dd>
  
  <dt>Termo 2</dt>
  <dd>Definição ou descrição do termo 2</dd>
</dl>

Exemplos do Mundo Real

Glossário:

<dl>
  <dt>HTML</dt>
  <dd>HyperText Markup Language - a linguagem de marcação padrão para criar páginas web</dd>
  
  <dt>CSS</dt>
  <dd>Cascading Style Sheets - usado para descrever a apresentação de um documento escrito em HTML</dd>
  
  <dt>JavaScript</dt>
  <dd>Uma linguagem de programação que permite páginas web interativas e conteúdo dinâmico</dd>
  
  <dt>Design Responsivo</dt>
  <dd>Uma abordagem ao web design que faz páginas web renderizarem bem em vários dispositivos e tamanhos de tela</dd>
</dl>

Especificações do Produto:

<dl>
  <dt>Tamanho da Tela</dt>
  <dd>15,6 polegadas</dd>
  
  <dt>Resolução</dt>
  <dd>1920 x 1080 pixels</dd>
  
  <dt>Processador</dt>
  <dd>Intel Core i7-11800H</dd>
  
  <dt>Memória</dt>
  <dd>16GB DDR4 RAM</dd>
  
  <dt>Armazenamento</dt>
  <dd>512GB SSD</dd>
  
  <dt>Peso</dt>
  <dd>1,9 kg</dd>
</dl>

Seção FAQ:

<dl>
  <dt>Qual é a sua política de devolução?</dt>
  <dd>Oferecemos uma política de devolução de 30 dias para todos os itens não utilizados na embalagem original. Os custos de envio de devolução são por conta do cliente, a menos que o item estivesse defeituoso.</dd>
  
  <dt>Quanto tempo leva o envio?</dt>
  <dd>O envio padrão leva 3-5 dias úteis. O envio expresso leva 1-2 dias úteis. O envio internacional varia por localização.</dd>
  
  <dt>Vocês oferecem suporte ao cliente?</dt>
  <dd>Sim, fornecemos suporte ao cliente 24/7 via email, telefone e chat ao vivo. Nossa equipe de suporte está sempre pronta para ajudar com quaisquer perguntas ou problemas.</dd>
</dl>

Múltiplas Descrições

Um termo pode ter múltiplas descrições:

<dl>
  <dt>JavaScript</dt>
  <dd>Uma linguagem de programação de alto nível</dd>
  <dd>Comumente usada para desenvolvimento web</dd>
  <dd>Suporta paradigmas de programação orientada a objetos e funcional</dd>
  
  <dt>Python</dt>
  <dd>Uma linguagem de programação interpretada de alto nível</dd>
  <dd>Conhecida por sua sintaxe simples e legível</dd>
  <dd>Popular para ciência de dados, desenvolvimento web e automação</dd>
</dl>

Múltiplos Termos, Uma Descrição

Múltiplos termos podem compartilhar a mesma descrição:

<dl>
  <dt>Frontend</dt>
  <dt>Lado do Cliente</dt>
  <dt>Interface do Usuário</dt>
  <dd>A parte de um site ou aplicação com a qual os usuários interagem diretamente</dd>
  
  <dt>Backend</dt>
  <dt>Lado do Servidor</dt>
  <dd>A lógica do lado do servidor e infraestrutura que alimenta um site ou aplicação</dd>
</dl>

Estilizando Listas com CSS

Enquanto HTML fornece a estrutura, CSS dá vida às listas com estilização personalizada.

Estilização Básica de Lista

/* Remover estilização padrão */
ul, ol {
  list-style: none;
  padding: 0;
  margin: 0;
}

/* Marcadores personalizados */
ul li {
  position: relative;
  padding-left: 20px;
}

ul li::before {
  content: "•";
  color: #007bff;
  font-weight: bold;
  position: absolute;
  left: 0;
}

Listas de Navegação Horizontais

.nav-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  gap: 20px;
}

.nav-list li {
  display: inline-block;
}

.nav-list a {
  text-decoration: none;
  color: #333;
  padding: 10px 15px;
  border-radius: 5px;
  transition: background-color 0.3s;
}

.nav-list a:hover {
  background-color: #f0f0f0;
}
<ul class="nav-list">
  <li><a href="/">Início</a></li>
  <li><a href="/sobre">Sobre</a></li>
  <li><a href="/servicos">Serviços</a></li>
  <li><a href="/contato">Contato</a></li>
</ul>

Listas Ordenadas Estilizadas

.custom-ordered {
  counter-reset: item;
  padding: 0;
  list-style: none;
}

.custom-ordered li {
  counter-increment: item;
  margin-bottom: 10px;
  padding-left: 40px;
  position: relative;
}

.custom-ordered li::before {
  content: counter(item);
  background: #007bff;
  color: white;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  left: 0;
  top: 0;
  font-weight: bold;
  font-size: 14px;
}

Estilização de Lista de Definição

.styled-dl {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 10px 20px;
  max-width: 600px;
}

.styled-dl dt {
  font-weight: bold;
  color: #333;
  padding: 10px 0;
  border-bottom: 1px solid #eee;
}

.styled-dl dd {
  padding: 10px 0;
  margin: 0;
  border-bottom: 1px solid #eee;
  color: #666;
}

Estilização de Lista Aninhada

.nested-list {
  list-style: none;
  padding: 0;
}

.nested-list li {
  margin: 5px 0;
  padding-left: 20px;
  position: relative;
}

.nested-list > li::before {
  content: "▶";
  position: absolute;
  left: 0;
  color: #007bff;
}

.nested-list ul {
  margin-top: 10px;
  padding-left: 20px;
}

.nested-list ul li::before {
  content: "▸";
  color: #666;
}

Melhores Práticas de Acessibilidade

Tornar listas acessíveis garante que todos os usuários possam navegar e entender seu conteúdo efetivamente.

HTML Semântico

<!-- Bom: Navegação semântica -->
<nav aria-label="Navegação principal">
  <ul>
    <li><a href="/" aria-current="page">Início</a></li>
    <li><a href="/sobre">Sobre</a></li>
    <li><a href="/contato">Contato</a></li>
  </ul>
</nav>

<!-- Bom: Propósito claro da lista -->
<h3>Documentos Necessários</h3>
<ul>
  <li>Carteira de motorista ou RG</li>
  <li>Comprovante de renda</li>
  <li>Extratos bancários</li>
</ul>

Rótulos e Descrições ARIA

<ul aria-label="Links de redes sociais">
  <li><a href="#" aria-label="Siga-nos no Facebook">Facebook</a></li>
  <li><a href="#" aria-label="Siga-nos no Twitter">Twitter</a></li>
  <li><a href="#" aria-label="Siga-nos no Instagram">Instagram</a></li>
</ul>
/* Garantir que indicadores de foco sejam visíveis */
.nav-list a:focus {
  outline: 2px solid #007bff;
  outline-offset: 2px;
}

/* Link pular para conteúdo */
.skip-link {
  position: absolute;
  top: -40px;
  left: 6px;
  background: #000;
  color: white;
  padding: 8px;
  text-decoration: none;
  z-index: 1000;
}

.skip-link:focus {
  top: 6px;
}

Erros Comuns de Lista a Evitar

1. Usar Listas Apenas para Layout

<!-- Errado: Usar listas apenas para estilização -->
<ul>
  <li><div>Conteúdo não realmente relacionado</div></li>
  <li><div>Apenas usando para estilização CSS</div></li>
</ul>

<!-- Correto: Usar elementos apropriados -->
<div class="card-grid">
  <div class="card">Conteúdo 1</div>
  <div class="card">Conteúdo 2</div>
</div>

2. Itens de Lista Ausentes

<!-- Errado: Conteúdo direto na lista -->
<ul>
  Texto diretamente na lista
  <li>Primeiro item</li>
  <li>Segundo item</li>
</ul>

<!-- Correto: Todo conteúdo em itens de lista -->
<ul>
  <li>Texto em um item de lista</li>
  <li>Primeiro item</li>
  <li>Segundo item</li>
</ul>

3. Aninhamento Inadequado

<!-- Errado: Item de lista fora do pai -->
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
</ul>
<li>Item órfão</li>

<!-- Correto: Aninhamento adequado -->
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

4. Usar Tipo de Lista Errado

<!-- Errado: Lista não ordenada para passos -->
<ul>
  <li>Primeiro, faça isso</li>
  <li>Então, faça aquilo</li>
  <li>Finalmente, faça isso</li>
</ul>

<!-- Correto: Lista ordenada para passos sequenciais -->
<ol>
  <li>Primeiro, faça isso</li>
  <li>Então, faça aquilo</li>
  <li>Finalmente, faça isso</li>
</ol>

Técnicas Avançadas de Lista

Contadores de Lista Personalizados

.custom-counter {
  counter-reset: section;
  list-style: none;
  padding: 0;
}

.custom-counter li {
  counter-increment: section;
  margin-bottom: 10px;
}

.custom-counter li::before {
  content: "Passo " counter(section) ": ";
  font-weight: bold;
  color: #007bff;
}

Listas Interativas

<ul class="interactive-list">
  <li>
    <input type="checkbox" id="task1">
    <label for="task1">Completar proposta do projeto</label>
  </li>
  <li>
    <input type="checkbox" id="task2">
    <label for="task2">Revisar feedback do cliente</label>
  </li>
  <li>
    <input type="checkbox" id="task3">
    <label for="task3">Atualizar cronograma do projeto</label>
  </li>
</ul>
.interactive-list {
  list-style: none;
  padding: 0;
}

.interactive-list li {
  margin: 10px 0;
  padding: 10px;
  background: #f9f9f9;
  border-radius: 5px;
}

.interactive-list input[type="checkbox"] {
  margin-right: 10px;
}

.interactive-list input[type="checkbox"]:checked + label {
  text-decoration: line-through;
  color: #666;
}

Resumo das Melhores Práticas

  1. Escolha o tipo de lista certo baseado no significado do conteúdo
  2. Use HTML semântico para melhor acessibilidade e SEO
  3. Forneça cabeçalhos claros para introduzir conteúdo de lista
  4. Estilize com CSS em vez de atributos HTML obsoletos
  5. Garanta acessibilidade por teclado para listas interativas
  6. Use rótulos ARIA quando o propósito da lista não estiver claro
  7. Aninhe adequadamente e valide seu HTML
  8. Teste com leitores de tela para garantir acessibilidade
  9. Mantenha itens de lista concisos e escaneáveis
  10. Use formatação consistente em todo o seu site

Conclusão

Listas HTML são ferramentas poderosas para organizar e apresentar informações efetivamente. Ao entender quando e como usar listas não ordenadas, ordenadas e de definição, você pode criar conteúdo web bem estruturado, acessível e amigável ao usuário.

Lembre-se de que a chave para o uso eficaz de listas é escolher o tipo certo para o significado e propósito do seu conteúdo. Combinado com estilização CSS cuidadosa e considerações de acessibilidade, as listas se tornam blocos de construção essenciais para criar experiências web envolventes e profissionais.

Comece a implementar essas técnicas de lista em seus projetos, e você notará organização de conteúdo melhorada, melhor experiência do usuário e acessibilidade aprimorada em seus sites.

Última atualização: October 3, 2025

Artigos Relacionados

Continue lendo com estes artigos relacionados