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.
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.
HTML fornece três tipos principais de listas, cada um servindo a propósitos diferentes:
<ul>
) - Para itens sem uma ordem específica<ol>
) - Para itens sequenciais ou classificados<dl>
) - Para pares termo-definiçãoVamos explorar cada tipo em detalhes.
<ul>
para Listas com MarcadoresListas 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.
<ul>
<li>Primeiro item</li>
<li>Segundo item</li>
<li>Terceiro item</li>
</ul>
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>
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.
<ol>
para Listas NumeradasListas 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.
<ol>
<li>Primeiro passo</li>
<li>Segundo passo</li>
<li>Terceiro passo</li>
</ol>
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 -->
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>
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.
<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>
<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>
<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>
<dl>
, <dt>
e <dd>
para DefiniçõesListas 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.
<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>
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>
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 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>
Enquanto HTML fornece a estrutura, CSS dá vida às listas com estilização personalizada.
/* 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;
}
.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>
.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;
}
.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;
}
.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;
}
Tornar listas acessíveis garante que todos os usuários possam navegar e entender seu conteúdo efetivamente.
<!-- 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>
<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;
}
<!-- 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>
<!-- 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>
<!-- 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>
<!-- 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>
.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;
}
<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;
}
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.
Continue lendo com estes artigos relacionados
Domine imagens HTML com este guia abrangente cobrindo a tag img, texto alternativo, formatos de arquivo, imagens responsivas, srcset e otimização de performance web.
Aprenda tabelas HTML do básico às técnicas avançadas. Domine elementos table, tr, td, th, acessibilidade, design responsivo e quando usar tabelas adequadamente.
Aprenda a criar formulários HTML interativos com tipos de entrada, rótulos, botões e validação básica. Domine a acessibilidade e melhores práticas de formulários.
Descubra o poder dos elementos HTML semânticos como header, footer, article e section. Aprenda como a marcação semântica melhora SEO, acessibilidade e manutenibilidade do código.