Gerador de Box Shadow

Gerador de Box Shadow CSS & Sombras

Gere sombras CSS multicamadas e elevações suaves realistas. Ajuste deslocamento, desfoque, dispersão e brilho interno (inset), exportando código CSS limpo ou tokens do Tailwind.

Ajuste Rápido

Progressão Harmônica de Camadas

Ângulo de Luz (90°)
Predefinições de Direção
Qtd. de Camadas:
Distância / Elevação50px
Desfoque Máximo80px
Expansão-5px
Opacidade25%
Taxa de Contato60%
Tonalidade da SombraNeutral
Borda Subpixel Nítida
Curva de SuavizaçãoCurva Cúbica
Elemento de Destino:
Fundo do Canvas:
DestaqueSample card version

Cartão de Interface SaaS

Visualize a renderização em tempo real da sombra projetada sob iluminação física simulada.

R$ 49/mês
Camadas Renderizadas
6 / Max layers count
Camadas individuais combinadas
Desfoque Total Acumulado
180px
Raio acumulado de dispersão
Eficiência de Rasterização
60 FPS Aceleração GPU Ativa
Estimativa de impacto na GPU
Referência técnica e guia de arquitetura

Gerador de Box Shadow CSS & Sombras — Guia de referência

Gere sombras CSS multicamadas (box-shadow) com elevação suave e realista. Personalize deslocamento, desfoque, propagação e brilho interno (inset), exportando tokens prontos para CSS e Tailwind.

Gerador de Box Shadow CSS & Sombras — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados
Gerador de Box Shadow CSS & Sombras — Guia de referência — Arquitetura em memória do lado do cliente e fluxo de dados

Parâmetros-chave e controles

offset-x (Deslocamento Horizontal)Comprimento (px)

Especifica o deslocamento cartesiano horizontal da sombra em relação à borda do elemento (border-box). Valores positivos projetam a sombra para a direita; valores negativos a deslocam para a esquerda. Em modelos de iluminação multicamada, o offset-x é derivado como dx = distance * cos(theta), onde theta representa o ângulo da fonte de luz incidente.

Padrão: 0px
offset-y (Deslocamento Vertical)Comprimento (px)

Especifica o deslocamento cartesiano vertical da sombra. Valores positivos projetam a sombra para baixo (simulando luz solar zenital ou iluminação ambiente de teto); valores negativos a projetam para cima. Modelos físicos de elevação escalam o offset-y proporcionalmente à elevação perceptual no eixo Z.

Padrão: 4px
blur-radius (Dispersão Gaussiana)Comprimento (px)

Define o parâmetro de desvio padrão do kernel do filtro de desfoque gaussiano aplicado ao perímetro da sombra (sigma = blur / 2). Um raio de desfoque igual a 0 gera uma silhueta rígida e nítida; valores acima de 0 produzem um gradiente de penumbra difusa. Valores superiores a 64px podem causar gargalos de rasterização na GPU em dispositivos móveis menos potentes.

Padrão: 12px
spread-radius (Dilatação / Contração Perimétrica)Comprimento (px)

Expande ou contrai a geometria da sombra em todas as quatro direções antes da rasterização do desfoque gaussiano. Valores positivos dilatam o perímetro da sombra para fora; valores negativos contraem a sombra para dentro — técnica fundamental em sombras multicamadas para evitar vazamento lateral (bleeding) enquanto preserva uma ancoragem vertical profunda.

Padrão: -2px
color & alpha (Absorção Cromática e Opacidade)Cor (HEX / RGBA / OKLCH)

Define a cor espectral e a opacidade da sombra projetada. Preto puro (rgba(0, 0, 0, alpha)) representa absorção não calibrada, gerando bordas acinzentadas e opacas sobre fundos coloridos. Tokens profissionais utilizam matizes tonificados (ex.: azul-marinho profundo para superfícies frias ou sépia escuro para superfícies quentes) com canal alfa calibrado entre 4% e 25%.

Padrão: rgba(0, 0, 0, 0.08)
inset (Sombra Interna em Baixo-Relevo)Flag de Palavra-chave

Quando ativado, inverte o vetor de projeção para renderizar a sombra dentro do border-box do elemento em vez de projetá-la externamente. Sombras inset simulam cavidades em baixo-relevo (debossing), rebaixos côncavos, chanfros internos iluminados e estados de botões pressionados, respeitando rigorosamente a curvatura do border-radius.

Padrão: false (externa)
harmonic falloff curve (Atenuação Harmônica Entre Camadas)Expoente Matemático (k)

O expoente da lei de potência polinomial ou exponencial (tipicamente k = 1.8 a 2.4) que controla a escala das distâncias de deslocamento, raios de desfoque gaussiano e opacidade alfa através das camadas consecutivas na pilha. Evita transições lineares artificiais e emula a dissipação óptica real da luz baseada na lei do inverso do quadrado da distância.

Padrão: 2.0 (quadrática)

Dicas profissionais e melhores práticas

Spread Radius Negativo Evita Vazamento Lateral em Cartões

Ao aplicar sombras verticais intensas (ex.: offset-y: 20px, blur: 25px), o desfoque gaussiano se expande automaticamente na horizontal para a esquerda e para a direita, gerando um aspecto inflado e artificial. Ao introduzir um spread radius negativo equivalente a cerca de 20% a 40% do deslocamento vertical (ex.: spread: -6px), você retrai as bordas laterais sem perder a ancoragem vertical inferior, obtendo uma elevação limpa e refinada.

Anime a Opacidade de Pseudo-Elementos em Vez do Box-Shadow para Garantir 60fps

Fazer transições ou animações diretas na propriedade CSS box-shadow força a engine de renderização do navegador a recalcular e rasterizar kernels pesados de desfoque gaussiano nas camadas de pintura (Paint) da CPU e GPU a cada quadro, causando engasgos (jank) e queda de frames no hover. Em vez disso, declare a sombra elevada em um pseudo-elemento ::after com opacity: 0 e will-change: opacity, animando apenas opacity: 1 e uma propriedade acelerada por hardware como transform: translateY(-2px), garantindo transições a 120fps fluidas no compositor da GPU.

Evite Bordas Cinzas Opacas Ajustando o Matiz da Sombra ao Tom do Fundo

Usar sombras pretas neutras (rgba(0, 0, 0, 0.15)) sobre superfícies coloridas como âmbar quente, verde-esmeralda ou safira cria halos acinzentados e dessaturados ao longo do perímetro do desfoque devido à interpolação sRGB gama. Para alcançar profundidade cromática sofisticada, derive a cor da sombra deslocando o matiz (hue) do fundo em 10° a 20° em direção a um tom complementar mais escuro, aumentando a saturação em 15% e reduzindo a luminosidade para a faixa de 8% a 15%.

Armadilhas comuns e solução de problemas

⚠️A sombra da caixa é cortada ou fica completamente invisível ao redor do cartão

Se um elemento pai contiver overflow: hidden ou overflow: auto, qualquer box-shadow que ultrapasse as dimensões da caixa delimitadora será recortada imediatamente. Resolva isso aplicando padding suficiente ao contêiner pai (no mínimo igual a blur + offset-y), removendo overflow: hidden ou aplicando a sombra a uma div externa isolada fora do fluxo do contêiner de rolagem.

⚠️Sombra multicamadas causa queda de quadros e alto consumo de memória GPU na rolagem

Empilhar mais de 6 camadas complexas de sombra com raios de desfoque acima de 60px consome memória excessiva no cache de textura da GPU, especialmente em telas Retina de alto DPI. Otimize reduzindo para 3 ou 4 camadas harmônicas rigorosamente calibradas, limitando o desfoque máximo a 40px e adicionando contain: paint ou will-change: transform para promover o elemento a uma camada isolada de composição por hardware.

⚠️Serrilhado ou falhas de suavização aparecem nos cantos arredondados no Safari WebKit

O WebKit apresenta um bug conhecido de suavização subpixel ao renderizar simultaneamente border-radius externo e box-shadow com a flag inset. Corrija isso aplicando explicitamente -webkit-mask-image: -webkit-radial-gradient(white, black), adicionando transform: translateZ(0) e assegurando que os valores de border-radius usem números inteiros em pixels em vez de decimais fracionados em rem.

⚠️A sombra não acompanha a silhueta transparente de um ícone PNG ou vetor SVG

A propriedade CSS box-shadow calcula a projeção exclusivamente sobre o retângulo border-box e o border-radius do elemento, ignorando áreas transparentes internas. Para projetar uma sombra que siga exatamente o contorno recortado de imagens PNG ou vetores SVG, substitua box-shadow por CSS filter: drop-shadow(x y blur color). Lembre-se de que filter: drop-shadow não suporta os argumentos spread ou inset.

Perguntas frequentes (FAQ)

Por que sombras CSS multicamadas parecem mais realistas do que sombras de camada única?▼

Sombras de camada única no CSS dependem de um desfoque gaussiano linear uniforme que não reproduz a física óptica do mundo real. Na física da luz, um objeto iluminado gera duas zonas de sombra distintas: uma umbra de contato escura e nítida sob a base (oclusão ambiente) e uma penumbra difusa, suave e ampla que se dissipa gradualmente. Ao empilhar de 3 a 6 camadas de box-shadow com decaimento exponencial de distância e desfoque (ex.: y_i = d * (i/n)^2.2, blur_i = b * (i/n)^2.0, alpha_i = alpha_max * e^(-0.6i)), simula-se com precisão tanto a oclusão ambiente quanto a dispersão volumétrica da luz.

Qual é a diferença entre CSS box-shadow e filter: drop-shadow()?▼

A propriedade CSS box-shadow atua estritamente sobre a caixa retangular (border-box) do elemento e seu border-radius, ignorando transparências internas e pseudo-elementos. Em contrapartida, filter: drop-shadow() avalia a máscara real do canal alfa dos pixels renderizados, projetando sombras nos contornos transparentes de PNGs, vetores SVG inline e formas criadas com clip-path. No entanto, filter: drop-shadow() não tem suporte ao parâmetro spread-radius nem à palavra-chave inset, além de exigir maior custo computacional de composição na GPU quando múltiplos filtros são encadeados.

Como evitar sombras cinzas opacas sobre fundos coloridos no CSS?▼

Sombras em preto puro (rgba(0, 0, 0, 0.15)) sobre fundos coloridos criam contornos cinzentos e visualmente sujos porque a mesclagem alfa no espaço sRGB reduz a cromaticidade do fundo. Para gerar sombras ricas e vívidas, capture a tonalidade do fundo, desloque-a entre 10° e 20° em direção a um tom complementar mais escuro (por exemplo, movendo um fundo laranja para um tom sépia avermelhado profundo, ou um fundo azul para azul-marinho meia-noite), aumente a saturação em 15% a 30% e reduza a luminosidade para 10% a 20%. No CSS moderno, isso pode ser automatizado com color-mix(in oklch, var(--bg-color), black 80%).

Como otimizar animações com box-shadow para 60fps sem sobrecarregar a GPU?▼

Nunca anime a propriedade box-shadow diretamente; essa prática força a CPU e a GPU do navegador a recalcular matrizes pesadas de desfoque gaussiano a cada quadro (disparando etapas custosas de Paint e Composite). Em vez disso, pré-renderize a sombra elevada em um pseudo-elemento ::after persistente com opacity: 0 inicial e anime apenas opacity e transform: translateY(-2px) nos estados :hover ou :focus. Como opacity e transform são processados inteiramente na thread do compositor da GPU sem acionar reflow (Layout) ou repintura (Paint), as animações alcançam 60fps/120fps constantes sem perda de quadros.

Qual é a escala ideal de elevação de box-shadow para sistemas de design?▼

Design systems de referência (como Material Design, Tailwind CSS e Apple HIG) organizam sombras em uma escala de elevação no eixo Z de 5 a 6 níveis: Elevação 1 (Estado de repouso de cartões/botões: 1-2px no eixo Y, 3-4px de desfoque, 5-8% de opacidade para separação sutil), Elevação 2 (Hover de cartões/botões elevados: 4-6px no eixo Y, 8-12px de desfoque, 10-12% de opacidade), Elevação 3 (Menus suspensos/popovers: 8-12px no eixo Y, 16-24px de desfoque, 12-15% de opacidade), Elevação 4 (Diálogos modais/drawers: 16-24px no eixo Y, 32-48px de desfoque, 15-20% de opacidade) e Elevação 5 (Toasts/alertas de sistema flutuantes: 24-32px no eixo Y, 48-64px de desfoque, 20-25% de opacidade com brilho perimétrico ambiente).

O CSS box-shadow afeta o layout da página ou dispara reflow?▼

Não, box-shadow não interfere na geometria do fluxo de layout do documento, não altera as dimensões do bounding box do elemento e não dispara recálculos de reflow (Layout) no DOM quando aplicado ou alternado. Contudo, como as sombras são renderizadas fora do modelo de caixa (box model), valores elevados de blur ou spread podem sobrepor elementos adjacentes, ocultar textos ou gerar barras de rolagem horizontal se a sombra ultrapassar a largura da viewport (a menos que seja contida por overflow: hidden).

Ferramentas e utilitários relacionados

Todas as ferramentas →