Mercado
Preços
EntrarComeçar
Guia práticoCSS e web
CSS e web

CSS box shadow: sombras suaves em camadas que parecem reais

Uma única box-shadow cinza é o jeito mais rápido de fazer uma interface parecer um modelo pronto. Sombras reais são várias sombras ao mesmo tempo, tingidas e mais discretas do que você imagina.

GradientlyConta verificada do Gradiently·1 de outubro de 2026·6 min de leitura
Capa: Tape Cliff · GR·CY1K·VC

Resumindo

  • A propriedade box-shadow do CSS aceita a palavra-chave opcional inset, dois deslocamentos, um raio de desfoque, um raio de espalhamento e uma cor.
  • Uma única box shadow parece artificial porque objetos reais projetam uma sombra de contato nítida e uma sombra larga e suave ao mesmo tempo.
  • Empilhar de três a cinco sombras, cada uma com cerca do dobro do deslocamento e do desfoque da anterior e baixa opacidade, produz uma sombra suave e convincente.
  • Tingir a sombra na direção do matiz do fundo fica mais natural que preto puro em superfícies coloridas ou quentes.
  • Animar a box-shadow redesenha a cada quadro, então faça a opacidade de um pseudoelemento que carrega a sombra maior aparecer e sumir gradualmente.
Nesta página
Sintaxe da box-shadowPor que uma única sombra parece falsaComo empilhar box shadowsUma escala de elevação para uma interfaceSombras em fundos coloridos e escurosAnimar a box-shadow sem engasgosQuando dispensar a sombra

Uma box shadow no CSS se escreve box-shadow: 0 4px 12px rgb(0 0 0 / 0.15): um deslocamento horizontal, um vertical, um raio de desfoque, um espalhamento opcional e uma cor. Essa sombra única serve para um protótipo rápido, mas raramente parece real. As sombras que convencem o olho são em camadas: várias sombras em um elemento, cada uma maior e mais tênue que a anterior, tingidas para combinar com a superfície embaixo.

Sintaxe da box-shadow

css
/* inset? | offset-x | offset-y | blur | spread | color */
.card { box-shadow: 0 4px 12px 0 rgb(0 0 0 / 0.15); }

/* Negative spread tucks the shadow under the box */
.card { box-shadow: 0 12px 24px -8px rgb(0 0 0 / 0.25); }

/* Inset: a shadow inside the box, like a pressed well */
.well { box-shadow: inset 0 2px 4px rgb(0 0 0 / 0.12); }

/* Spread only: a hairline that follows border-radius */
.chip { box-shadow: 0 0 0 1px rgb(15 23 42 / 0.08); }

/* Several shadows, comma separated, first on top */
.card { box-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 8px 16px rgb(0 0 0 / 0.08); }
A sombra sempre segue o border-radius, e por isso uma sombra só de espalhamento faz um fio arredondado bem acabado sem alterar o layout.
insetDesligado

Efeito

Desenha a sombra dentro da borda em vez de fora
Deslocamento x e y

Padrão

Obrigatório

Efeito

Move a sombra. Luz vinda de cima significa um y positivo
Desfoque0

Efeito

Suaviza a borda. Valores maiores espalham mais o esmaecimento
Espalhamento

Padrão

0

Efeito

Aumenta ou reduz a sombra antes de desfocar. Negativo a recolhe
Corcurrentcolor

Efeito

Use uma cor com alfa; sombras opacas parecem adesivos
ValorPadrãoEfeito
insetDesligadoDesenha a sombra dentro da borda em vez de fora
Deslocamento x e yObrigatórioMove a sombra. Luz vinda de cima significa um y positivo
Desfoque0Suaviza a borda. Valores maiores espalham mais o esmaecimento
Espalhamento0Aumenta ou reduz a sombra antes de desfocar. Negativo a recolhe
CorcurrentcolorUse uma cor com alfa; sombras opacas parecem adesivos
O espalhamento é o valor que a maioria pula e o que mais resolve. Um pequeno espalhamento negativo impede que um desfoque grande vaze pelas laterais.

Por que uma única sombra parece falsa

Ponha um livro numa mesa e olhe a sombra dele. Bem na borda onde toca, a sombra é escura e nítida. Mais longe ela fica larga e tênue, porque a luz envolve o objeto de várias direções. Uma só box-shadow só consegue ser uma dessas coisas por vez: curta e dura, ou larga e borrada. De qualquer modo o olho percebe que falta algo.

Sombra única

  • Um desfoque médio em preto a 25 por cento
  • Halo cinza em volta de todo o cartão
  • Difícil saber a que altura o cartão flutua
  • Fica suja em fundos coloridos

Sombra em camadas

  • Quatro sombras, cada uma mais tênue e mais larga
  • Densa perto da borda, leve ao longe
  • A altura se lê num relance
  • Tingida para assentar naturalmente na superfície

Como empilhar box shadows

O método é simples: comece pequeno e nítido e depois dobre o deslocamento e o desfoque a cada camada extra, mantendo cada uma tênue. As opacidades se somam onde as camadas se sobrepõem, então os valores individuais podem ser surpreendentemente baixos.

  1. 1

    Comece com uma sombra de contato

    0 1px 1px com cerca de 8 por cento de opacidade. É a linha escura bem sob a borda.

  2. 2

    Dobre a cada camada

    Depois 0 2px 2px, 0 4px 4px, 0 8px 8px. Deslocamento e desfoque crescem juntos, então a luz parece vir de cima.

  3. 3

    Mantenha cada camada tênue

    Entre 5 e 10 por cento cada. Se o resultado ficar pesado, remova a maior camada antes de escurecer qualquer coisa.

  4. 4

    Tinja a cor

    Troque o preto por uma versão profunda do matiz do fundo, como um azul-marinho em páginas azuis ou um marrom em creme.

css
:root {
  /* Shadow colour as channels, so opacity can vary per layer */
  --shadow-color: 222 47% 11%;

  --shadow-sm:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.06);

  --shadow-md:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.05);

  --shadow-lg:
    0 1px 1px hsl(var(--shadow-color) / 0.07),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.06),
    0 16px 16px hsl(var(--shadow-color) / 0.05),
    0 32px 32px hsl(var(--shadow-color) / 0.04);
}

.card { box-shadow: var(--shadow-md); }
.dialog { box-shadow: var(--shadow-lg); }
Uma escala de elevação de três passos como propriedades personalizadas. Mude --shadow-color uma vez e toda sombra do sistema acompanha.

Guardar sombras como variáveis as transforma em design tokens, o que mantém todo cartão, menu e diálogo consistente. Variáveis CSS para temas e design tokens mostram como ligá-las em um tema completo.

Uma escala de elevação para uma interface

A sombra é um sinal de altura, então deve significar a mesma coisa em todo lugar. Escolha três ou quatro níveis e atribua funções. O que flutua mais alto ganha uma sombra maior e mais suave, nunca só mais escura.

0nenhuma, ou um fio de espalhamento de 1px

Use para

Campos, linhas de tabela, cartões chapados sobre página tingida
1--shadow-sm

Use para

Cartões em repouso, botões que devem parecer clicáveis
2--shadow-md

Use para

Cartões com hover, menus suspensos, popovers
3--shadow-lg

Use para

Diálogos, painéis, qualquer coisa sobre uma página escurecida
NívelTokenUse para
0nenhuma, ou um fio de espalhamento de 1pxCampos, linhas de tabela, cartões chapados sobre página tingida
1--shadow-smCartões em repouso, botões que devem parecer clicáveis
2--shadow-mdCartões com hover, menus suspensos, popovers
3--shadow-lgDiálogos, painéis, qualquer coisa sobre uma página escurecida
Quatro níveis cobrem quase toda interface. Mais que isso e as pessoas deixam de distingui-los.

Sombras em fundos coloridos e escuros

Sombras de preto puro ficam cinzentas e turvas em superfícies coloridas, do mesmo modo que preto misturado à tinta a opaca. Tire a cor da sombra do fundo: uma sombra azul-petróleo profunda numa página menta, um ameixa escuro numa lilás. Em fundos com gradiente, pegue o ponto mais escuro do gradiente e use com baixa opacidade.

Três cores de página, cada uma com a cor de sombra que lhe convém. Use os tons de sombra a 5 a 10 por cento por camada.

No modo escuro, as sombras quase desaparecem, porque há pouca luz para bloquear. Mostre a altura deixando as superfícies elevadas um pouco mais claras e mantenha um fio tênue na borda. Design de modo escuro passa pelas cores de superfície. Para painéis que flutuam sobre imagens, um backdrop filter muitas vezes separa as camadas melhor que uma sombra mais pesada.

Animar a box-shadow sem engasgos

Mudar a box-shadow no hover obriga o navegador a redesenhar a sombra a cada quadro da transição. Em um botão, tudo bem. Em uma grade de cinquenta cartões, engasga. A solução padrão é pôr a sombra maior em um pseudoelemento e animar a opacidade dele, o que o navegador compõe a baixo custo.

css
.card {
  position: relative;
  box-shadow: var(--shadow-sm);
}

.card::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  transition: opacity 200ms ease-out;
  pointer-events: none;
}

.card:hover::after { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .card::after { transition: none; }
}
As duas sombras são pintadas uma vez. O hover só muda a opacidade, então nada é redesenhado durante a transição.

Mais sobre o que custa tempo de pintura está em desempenho de gradientes CSS, e a mesma abordagem em camadas serve para botões em botões com gradiente em CSS.

Quando dispensar a sombra

Sombras separam uma superfície do que está atrás. Se o fundo é um gradiente rico ou uma fotografia, uma sombra forte briga com ele. Muitas vezes um fundo mais quieto faz mais pelo cartão do que qualquer sombra. Os Marks do Gradiently foram feitos para isso: cada um é um fundo vivo com suas cores, luz e granulado, e as palavras que você coloca sobre ele continuam legíveis porque o Mark se acalma atrás delas, sem caixas nem sombras fazendo o trabalho.

Encontre um gradiente só seu

Explore milhares de Marks, crie com qualquer um deles de graça e reserve o que tem a sua cara.

Explorar o Mercado

Perguntas frequentes

Quais são os valores da box-shadow no CSS?

Um inset opcional, um deslocamento horizontal, um vertical, um raio de desfoque, um raio de espalhamento e uma cor, por exemplo 0 4px 12px 0 rgb(0 0 0 / 0.15).

Como faço uma box shadow suave no CSS?

Empilhe de três a cinco sombras, dobrando o deslocamento e o desfoque a cada vez, com 5 a 10 por cento de opacidade cada. Tinja-as na direção da cor do fundo.

Como adiciono mais de uma box shadow?

Separe-as por vírgulas em uma única declaração box-shadow. A primeira listada é desenhada por cima.

O que o espalhamento faz na box-shadow?

Ele aumenta ou reduz a sombra antes de ela ser desfocada. Um espalhamento negativo impede que um desfoque grande apareça nas laterais da caixa.

Animar a box-shadow prejudica o desempenho?

Ela redesenha a cada quadro. Ponha a sombra do hover em um pseudoelemento e faça a transição da opacidade dele.

Compartilhar este guia

Escrito pelo GradientlyConta verificada do Gradiently

A equipe por trás do Gradiently, uma ferramenta de design criada em torno dos Marks: gradientes vivos que fazem tudo o que você cria ter a sua cara.

Ver nosso perfil

Nesta página

Sintaxe da box-shadowPor que uma única sombra parece falsaComo empilhar box shadowsUma escala de elevação para uma interfaceSombras em fundos coloridos e escurosAnimar a box-shadow sem engasgosQuando dispensar a sombra

Compartilhar este guia

A seguir em CSS e web

color-mix() no CSS: misturar cores direto no navegador

Continue lendo

Todos os guias de CSS e web
CSS e web

Backdrop filter no CSS: vidro fosco que continua rápido

6 min de leitura

O vidro fosco leva três linhas de CSS e ainda pode fazer um bom celular engasgar. Veja o código, quanto custa desenhá-lo e os planos B que mantêm o texto legível quando o desfoque não chega.

CSS e web

Text shadow em CSS: sintaxe, exemplos e opções melhores

5 min de leitura

text-shadow é uma propriedade pequena com fama de salvar títulos ilegíveis. Ela é melhor em decoração do que em resgate. Aqui está a sintaxe, alguns estilos que valem a cópia e o que usar quando o problema de verdade é a legibilidade.

CSS e web

Design tokens: uma fonte da verdade para cor e tipografia

5 min de leitura

Uma cor da marca que vive em quarenta arquivos vai se desviar. Um token vive em um só lugar e toda plataforma lê dele. Veja como estruturar design tokens, nomeá-los para durar e levá-los ao código e às ferramentas de design.

Encontre o visual que é só seu.

Cada Mark é um fundo vivo com um único dono. Experimente um Mark ainda disponível e reserve o seu quando sentir que é ele.

Começar a criar

Verificar um certificado

Digite o número de um certificado ou o código de um Mark para ver quem é o dono.

Funciona com ChatGPT e Claude

Peça um design à sua IA. Ela cria no seu Mark, pronto para editar.

ChatGPTClaude
Como conectar

Produto

  • Mercado
  • Explorar
  • Preços
  • Certificados

Aprender

  • Guia prático
  • Central de ajuda
  • Novidades

Desenvolvedores

  • Visão geral
  • ChatGPT e Claude
  • Referência da API
  • Chaves de API

Empresa

  • Sobre
  • Fale conosco
  • Entrar

Jurídico

  • Termos
  • Privacidade
  • Reembolsos
  • Proteção do Mark
  • Cookies
  • Todas as políticas
Passe pelas letras. Cada uma veste um Mark de verdade.Toque em uma letra para ver o Mark dela.Um nome. Dez Marks dentro dele.
© 2026 Gradiently