O que a tag span faz
<span> envolve um trecho de texto dentro de uma linha para você estilizá-lo ou encontrá-lo com JavaScript. É o gêmeo inline da <div>: não tem significado nem aparência padrão, e não começa uma linha nova.
A frase continua numa linha só. Só as palavras envolvidas mudam.
div vs span
As duas têm o mesmo propósito (um contêiner sem significado) e diferem na forma como ficam na página:
A div quebra a frase em três linhas e se estende pela página; o span fica dentro da frase e abraça o seu texto.
<div> | <span> | |
|---|---|---|
| Exibição | Block | Inline |
| Começa uma linha nova | Sim | Não |
| Largura | Toda a largura disponível | A largura do conteúdo |
width, height, margem vertical | Aplicados | Ignorados |
| Pode conter | Qualquer coisa, inclusive blocks | Só texto e elementos inline |
| Uso típico | Seções, cards, wrappers de layout | Uma palavra ou expressão dentro do texto |
Mais uma diferença: uma <div> não é permitida dentro de um <p>, e o navegador fecha o parágrafo antes da hora se você tentar, enquanto um span pode ir em qualquer lugar onde vai texto. Mais sobre isso na página da div.
Estilizando um span: o que funciona e o que não funciona
Cor, fonte, fundo e padding horizontal funcionam num span. Tamanho não: um elemento inline ignora width, height e as margens de cima e de baixo. Mude para inline-block para definir o tamanho e mantê-lo na linha:
O primeiro span tem só a largura das palavras. O segundo tem exatamente 120 por 40 pixels e continua dentro da frase.
Spans com JavaScript
Um span é o marcador de posição comum para um valor que um script preenche, como um contador ou um nome de usuário:
Só o número muda; o resto da frase fica intacto.
Quando uma tag específica é melhor que span
Um span não tem significado, então o leitor de tela o lê como texto simples. Quando as palavras têm um papel, use a tag desse papel e estilize como quiser:
| Significado | Use no lugar de um span |
|---|---|
| Texto importante | <strong> |
| Ênfase | <em> |
| Texto destacado ou marcado | <mark> |
| Código, nome de arquivo | <code> |
| Uma tecla do teclado | <kbd> |
| Uma data ou hora | <time datetime="2026-09-24"> |
| Texto em outro idioma | <span lang="fr"> (span mais o atributo lang) |
A página de negrito explica a diferença entre <strong>, <b>, <em> e <i>.
Erros comuns
- Definir
widthnum span simples. É ignorado. Usedisplay: inline-block. - Colocar uma div ou um parágrafo dentro de um span. HTML inválido que quebra a linha. Troque o span externo por uma div.
- Spans clicáveis. Como a div, um span com
onclicknão é alcançável pelo teclado. Use um<button>ou um link. - Um span para cada estilo. Se parágrafos ou seções inteiras precisam de um estilo, coloque a classe no próprio
<p>ou contêiner, em vez de envolver o texto num span.
Perguntas frequentes
O que é um span no HTML?
<span> é um contêiner inline genérico. Ele envolve parte de uma linha de texto, como uma palavra, para que CSS ou JavaScript possam mirá-la, e não tem aparência nem significado próprios.
Qual a diferença entre div e span?
Uma <div> é um block: começa numa linha nova e ocupa a largura toda. Um <span> é inline: fica dentro da linha de texto e tem só a largura do conteúdo. Use div para agrupar blocos de conteúdo e span para marcar palavras dentro do texto.
Por que width não funciona no meu span?
Elementos inline ignoram width, height e margens verticais. Dê ao span display: inline-block para mantê-lo na linha aceitando um tamanho, ou display: block para que ele se comporte como uma div.
Como mudar a cor de uma palavra no HTML?
Envolva a palavra num span com uma classe e dê a cor no CSS: <span class="accent">word</span> com .accent { color: #2563eb; }. Para um caso isolado, <span style="color: #2563eb">word</span> também funciona.
Um span pode conter uma div?
Não. Um span só pode conter conteúdo inline, como texto, links, imagens e outros spans. Os navegadores até exibem uma div dentro de um span, mas é HTML inválido e quebra a linha, então troque o elemento externo por uma div.