Gerador de Box Shadow

Empilhe camadas de sombra com deslocamento, desfoque, espalhamento, cor e inset, pré-visualize em claro ou escuro e copie o CSS.

As sombras são geradas localmente no seu navegador. Nada sai do seu dispositivo.

Aa
Camadas
Predefinições
CSS gerado

Como funciona

Um valor de box-shadow tem cinco partes em ordem fixa: offset-x (deslocamento horizontal, positivo vai para a direita), offset-y (positivo vai para baixo), raio de desfoque (o quanto a borda se espalha; 0 dá uma silhueta dura), espalhamento (encolhe ou aumenta a sombra antes do desfoque —negativo a recolhe, positivo a infla) e a cor, montada aqui com o matiz escolhido mais um slider de opacidade que vira o alfa do rgba(). A palavra-chave inset inverte tudo para pintar dentro do border-box em vez de atrás.

Primeiro espalhamento, depois desfoque
O modelo mental que bate com a especificação: o spread redimensiona o retângulo da sombra antes do desfoque começar, e o desfoque então se espalha desse novo borda para fora. É por isso que spread: -20px com blur: 0 cria a foice embaixo de um elemento, e por que um espalhamento positivo numa sombra inset pinta um anel interno grosso mas com lados suaves. O desfoque nunca "salva" um valor de spread; ele apenas pena o que o spread deixou.
Ordem das camadas: a primeira por cima
Sombras separadas por vírgula se empilham com a primeira listada desenhada sobre as demais. Neste construtor o painel de camadas mostra a mesma ordem que o CSS terá, e os botões cima/baixo reordenam a pilha. Um padrão útil é uma primeira camada justa e escura para o contato da borda e uma camada posterior grande e suave para a profundidade ambiente —inverta-as e a suave lava a nítida.
Desempenho com desfoques grandes
O desfoque é uma convolução de estilo gaussiano, então o custo cresce com o raio e com quantos pixels sombreados você tem. Sombras estáticas são desenhadas uma vez e ficam essencialmente de graça em repouso; o risco é animar sombras grandes e desfocadas, o que repainta a cada frame. Se um hover pesar, reduza o raio, mova menos sombras, ou faça um cross-fade de opacity numa sombra pré-renderizada num pseudo-elemento.

Perguntas frequentes

Para uma linha fina: border ou sombra mínima?

Para um anel de 1px que não pode mudar o tamanho da caixa, o truque da sombra vence: inset 0 0 0 1px desenha o contorno dentro do border-box sem impacto no layout, então padding, largura e border-radius ficam exatamente como projetados. Uma borda real soma ao elemento (mesmo com border-box ela come espaço de conteúdo) e desloca o interno pela sua espessura. Sombras também acompanham transform e zoom sem reflow.

box-shadow projeta sombra em PNG transparente?

Não — box-shadow sempre sombreia o retângulo border-box, nunca a silhueta alfa da imagem, então um recorte ganha um quadrado sombreado atrás. A propriedade irmã para esse trabalho é filter: drop-shadow(8px 8px 6px rgba(0,0,0,0.4)), que segue os pixels visíveis de imagens e SVGs. Ela não aceita spread e fica sempre atrás do elemento, mas para adesivos e logos é a ferramenta certa.

Qual a diferença do text-shadow?

text-shadow pinta cópias do desenho das letras, não de uma caixa: aceita offset-x, offset-y e desfoque, mas não tem palavra-chave spread nenhuma, e pode ser empilhado por vírgulas para glow como 0 0 8px. Ele acompanha o texto em si —inclusive ::first-line e ::first-letter—, por isso o CSS gerado aqui não mexe em nenhuma sombra de texto que você já tenha.

Transição de box-shadow é barata?

Animar box-shadow direto força repaint a cada frame: hover em poucos elementos vai bem, mas listas longas de sombras animadas podem engasgar em hardware fraco. A otimização clássica é um pseudo-elemento segurando a sombra final, transicionado com opacity, que o navegador costuma conseguir compor. A quantidade de camadas desfocadas pesa mais que a distância: três camadas suaves empilhadas custam menos que uma sombra interpolada a cada frame.

Algo é enviado para um servidor?

Não. Toda sombra é calculada no seu navegador a partir dos sliders e entregue à sua área de transferência como CSS puro. Não há conta, armazenamento nem requisição de rede, e a página continua funcionando sem internet.