Como o text-shadow funciona
text-shadow pinta uma cópia do texto atrás dele, deslocada e desfocada. Você informa um deslocamento horizontal, um deslocamento vertical, um desfoque opcional e uma cor.
3px 3px 0 #f59e0b significa 3px para a direita (físico, em qualquer direção de escrita), 3px para baixo, sem desfoque, âmbar. A segunda sombra desfoca 6px e usa um preto semitransparente, a receita comum para um efeito sutil de profundidade.
A sintaxe
text-shadow: <offset-x> <offset-y> <blur-radius>? <color>?;
| Valor | Obrigatório | Significado |
|---|---|---|
| offset-x | Sim | Positivo move a sombra para a direita, negativo para a esquerda |
| offset-y | Sim | Positivo move para baixo, negativo para cima |
| blur-radius | Não (padrão 0) | O quanto a borda é suave; valores negativos são inválidos |
| color | Não (padrão: a cor do texto) | Pode vir no começo ou no fim |
text-shadow: none remove uma sombra herdada. Mude os valores abaixo para ver o efeito de cada um:
Experimente -4px -4px 0 #16a34a, 0 0 10px red e duas sombras separadas por vírgula.
Várias sombras: brilho, contorno e 3D
As vírgulas empilham sombras; a primeira é desenhada por cima. Três efeitos saem dessa única regra:
- Brilho: deslocamentos zero, desfoque crescente, em fundo escuro.
- Contorno: quatro sombras sem desfoque, uma por diagonal. Funciona para contornos finos; para um contorno uniforme mais grosso,
-webkit-text-stroke: 2px #111827(suportado em todos os navegadores atuais, apesar do prefixo) desenha um traço nas bordas das letras. - 3D: uma série de sombras sem desfoque, cada uma 1px mais longe, para as letras parecerem extrudadas.
Manter o texto legível em um fundo carregado
Texto branco sobre uma foto ou uma estampa perde as bordas onde o fundo é claro. Uma sombra escura e suave as traz de volta sem uma caixa visível:
A sombra ajuda, mas não garante contraste. Para textos longos sobre uma imagem, acrescente também uma camada sólida ou em degradê atrás do texto.
text-shadow vs box-shadow
| text-shadow | box-shadow | |
|---|---|---|
| Segue | O formato das letras | A caixa do elemento (e o border-radius dela) |
| Valor de spread | Não | Sim |
inset | Não | Sim |
| Várias, separadas por vírgula | Sim | Sim |
Para sombras em cards e botões, veja box-shadow.
Erros comuns
- Sombras pesadas e escuras no texto do corpo. Elas borram o formato das letras. Deixe as sombras para títulos e rótulos curtos.
- Esquecer o segundo deslocamento.
text-shadow: 2px #000é inválido; os dois deslocamentos são obrigatórios. - Um desfoque negativo. É inválido e a declaração inteira é descartada.
- Esperar que a sombra ocupe espaço. Ela só é pintada; sombras grandes podem invadir a linha seguinte ou ser cortadas por
overflow: hidden. - Efeitos de brilho em fundos claros. Um brilho claro sobre branco fica invisível. Brilhos precisam de fundo escuro.
Perguntas frequentes
Qual é a sintaxe do text-shadow?
text-shadow: offset-x offset-y blur-radius color;, por exemplo text-shadow: 2px 2px 4px rgb(0 0 0 / 40%);. Os dois deslocamentos são obrigatórios; o desfoque vale 0 por padrão e a cor é a do texto.
Como colocar mais de uma sombra no texto?
Separe as sombras com vírgulas: text-shadow: 0 0 4px #fff, 0 0 12px #2563eb;. A primeira sombra é desenhada por cima das seguintes.
Como fazer um efeito de brilho no texto?
Use sombras sem deslocamento e com desfoque, muitas vezes várias com desfoque crescente: text-shadow: 0 0 4px #60a5fa, 0 0 12px #2563eb;. Em um fundo escuro, isso vira um brilho neon.
O text-shadow tem valor de spread como o box-shadow?
Não. O text-shadow não tem spread nem a palavra-chave inset. Para engrossar a sombra em volta das letras, empilhe várias sombras ou use -webkit-text-stroke para um contorno.
O text-shadow afeta o layout?
Não. A sombra é só pintada; ela não ocupa espaço nem move o conteúdo em volta, então uma sombra grande pode se sobrepor aos elementos próximos.