A tag span: agrupando conteúdo em linha
Veja a diferença entre div e span, e quando usar cada uma para organizar pequenos trechos dentro de um texto.
Na lição anterior, você conheceu a <div> — o armário genérico
para agrupar blocos de conteúdo. Agora, imagine que você precisa
destacar uma palavra específica ou uma pequena frase
dentro de um parágrafo, sem quebrar o fluxo do texto. Para isso,
temos a tag <span>.
span é como a <div>, mas para conteúdo inline (em linha).
Ela também é um contêiner neutro, sem significado semântico
próprio, e sua única função é agrupar pequenos trechos de
conteúdo para:
- Estilização com CSS: Aplicar estilos a um trecho específico de texto.
- Manipulação com JavaScript: Selecionar e modificar um trecho de texto.
O que é um span?
A <span> é um elemento inline genérico. Isso significa
que, por padrão:
- Ela ocupa apenas a largura necessária para seu conteúdo.
- Ela não começa em uma nova linha e não força o próximo elemento a começar em uma nova linha. Ela "flui" junto com o texto.
- Ela pode conter apenas outros elementos inline.
Visualmente, uma <span> sozinha não faz nada. Ela não adiciona
espaçamento, bordas ou qualquer estilo por padrão. Ela é um
contêiner invisível dentro do texto até que você aplique CSS a ela.
<!-- Exemplo básico de span -->
<p>Este é um texto com uma <span style="color: blue; font-weight: bold;">palavra importante</span> destacada.</p>
<p>Outro trecho com <span style="background-color: yellow;">informação relevante</span>.</p>
span vs. div: a diferença fundamental
A principal diferença entre <span> e <div> é o seu
comportamento de exibição padrão:
| Característica | <span> (Inline) |
<div> (Bloco) |
|---|---|---|
| Comportamento | Flui com o texto, não quebra linha. | Ocupa 100% da largura, sempre quebra linha. |
| Largura/Altura | Largura e altura são definidas pelo conteúdo. | Largura padrão de 100%, altura definida pelo conteúdo. |
| Margens/Padding | Margens e padding horizontais funcionam. Margens e padding verticais são ignorados ou se comportam de forma estranha. | Margens e padding em todas as direções funcionam perfeitamente. |
| Conteúdo | Pode conter apenas elementos inline. | Pode conter elementos de bloco e inline. |
| Uso | Agrupar trechos de texto, palavras, ícones. | Agrupar seções inteiras, blocos de conteúdo. |
Quando usar span?
Use <span> sempre que precisar aplicar um estilo ou
manipular um pequeno trecho de conteúdo dentro de uma linha,
sem alterar o fluxo do documento.
1. Para estilização de texto
<style>
.destaque {
color: #e74c3c; /* Vermelho */
font-weight: bold;
}
.sublinhado {
text-decoration: underline;
}
.icone {
font-family: 'Font Awesome'; /* Exemplo de fonte de ícones */
margin-right: 5px;
}
</style>
<p>
O prazo final para entrega do projeto é
<span class="destaque">amanhã</span>.
</p>
<p>
Clique <span class="sublinhado">aqui</span> para mais informações.
</p>
<p>
<span class="icone"></span> Avaliação 5 estrelas!
</p>
2. Para manipulação com JavaScript
<p>
O preço original era <span id="preco-antigo" style="text-decoration: line-through;">R$ 199,90</span>.
Agora, por apenas <span id="preco-novo" style="color: green; font-weight: bold;">R$ 99,90</span>!
</p>
<script>
const precoAntigo = document.getElementById('preco-antigo');
const precoNovo = document.getElementById('preco-novo');
// Exemplo: mudar o texto do preço novo após 5 segundos
setTimeout(() => {
precoNovo.textContent = 'R$ 89,90 (Promoção relâmpago!)';
}, 5000);
</script>
span vs. elementos semânticos inline
Assim como a <div>, a <span> é um elemento não semântico.
Isso significa que ela não descreve o tipo de conteúdo que contém.
Sempre que houver um elemento inline semântico mais apropriado,
prefira-o à <span>.
| Elemento Semântico Inline | O que ele representa | Exemplo de uso |
|---|---|---|
<strong> |
Texto de importância forte. | Importante! |
<em> |
Ênfase (geralmente itálico). | Realmente importante. |
<mark> |
Texto marcado ou destacado. | <mark>Destaque</mark> |
<time> |
Data e/ou hora. | <time datetime="2026-05-28">28 de maio de 2026</time> |
<code> |
Trecho de código. | console.log() |
<abbr> |
Abreviação ou acrônimo. | <abbr title="HyperText Markup Language">HTML</abbr> |
Quando usar span e quando usar elementos semânticos inline?
- Use elementos semânticos inline quando o trecho de texto tem um significado claro e específico (é uma ênfase, uma data, um código, etc.). Isso melhora a acessibilidade e o SEO.
- Use
<span>quando o agrupamento é puramente para fins de estilização ou manipulação com JavaScript, e o trecho de texto não se encaixa em nenhum elemento semântico inline mais específico.
<!-- ✅ Bom uso de elementos semânticos inline -->
<p>
Este é um texto com uma palavra <strong style="color: red;">muito importante</strong>.
A reunião será às <time datetime="14:00">14h</time>.
</p>
<!-- ✅ Bom uso de span (para estilização que não tem semântica própria) -->
<p>
O valor total é de <span class="moeda">R$</span> <span class="valor">1.250,00</span>.
<!-- 'moeda' e 'valor' não têm tags semânticas específicas -->
</p>
<!-- ❌ Mau uso de span (poderia ser semântico) -->
<p>
Este é um texto com uma <span style="font-weight: bold;">palavra importante</span>.
<!-- Deveria ser <strong> -->
</p>
<p>
A reunião será às <span class="horario">14h</span>.
<!-- Deveria ser <time> -->
</p>
Resumindo
<span>é um elemento inline genérico e não semântico.- Sua principal função é agrupar pequenos trechos de conteúdo dentro de uma linha para estilização com CSS ou manipulação com JavaScript.
- Ela não quebra linha e ocupa apenas o espaço necessário para seu conteúdo.
- Sempre que possível, prefira elementos semânticos inline
(
strong,em,time,code, etc.) em vez de<span>para dar significado ao seu conteúdo. - Use
<span>quando o agrupamento é puramente visual ou funcional, e não há um elemento semântico inline mais apropriado.