Anúncios incomodam? Ir Sem anúncios Hoje

Sombras de Caixa CSS Obter resultados realistas sem tentativa e erro

Publicado em
Sombras de Caixa CSS: Obter Resultados Realistas Sem Tentativa e Erro 1
ANUNCIADO Remover?

A sombra de caixa é uma das propriedades CSS que parece simples até você olhar para um resultado que parece arte de corte de 2008. A sintaxe é curta, mas o que cada valor realmente faz — e como eles se interagem — não é evidente. Aqui está como escrever sombras que parecem pensadas, e não coladas.

A Sintaxe, Desmistificada

box-shadow: offset-x offset-y blur-radius spread-radius color;

Cinco valores. Vamos ser precisos sobre cada um:

  • offset-x: A distância que a sombra é empurrada horizontalmente. Movimentos positivos a direita; negativos para a esquerda.
  • offset-y: A distância que a sombra é empurrada verticalmente. Movimentos positivos para baixo.
  • blur-radius: Aumenta a suavidade da sombra. Em 0, a borda é rígida. Valores maiores suavizam a borda usando um suavização gaussiana aplicada à forma da sombra.
  • spread-radius: Expande ou contrai a forma da sombra antes após a aplicação do blur. Valores positivos tornam a sombra maior que o elemento; valores negativos tornam a sombra menor.
  • color: A cor da sombra. Um erro comum é usar preto puro.
  • inset: Uma palavra-chave opcional que inverte a sombra para dentro do elemento.

Blur versus Spread: A Confusão que Destrói as Sombras

Esses dois valores são a fonte da maioria dos momentos "por que isso parece estranho".

Blur torna a sombra suave. Simula a difusão da luz — quanto mais distante da fonte, mais a sombra se espalha. Um blur-radius ) quanto a captura contínua ( 8px em um elemento pequeno parece muito diferente de um grande.

Spread aumenta ou diminui a forma base da sombra. Se você está tentando criar a impressão de uma sombra que está "longe" e suave, aumentar o blur sem um spread negativo significa que a sombra se espalha além da borda do elemento, o que pode parecer desalinhado. Um pequeno spread negativo o aperta de volta, para que o blur comece a partir de um padrão mais natural.

A combinação correta é geralmente um blur moderado com zero ou ligeiramente negativo spread. Assim funcionam as sombras do mundo real — são mais suaves à distância, mas não se expandem além do objeto que as projeta.

Criar Sombras que Parecem Naturais

Três regras para sombras que parecem intencionais:

1. Não use preto puro. As sombras reais capturam a cor ambiente. Um navy escuro ou um cinza quente escuro em 0.10–0.15 leitura de opacidade parece como uma sombra sem parecer uma forma estampada. Tente rgba(0, 0, 0, 0.12) como ponto de partida, depois desloque ligeiramente o tom para mais quente ou mais frio para se alinhar com sua paleta.

2. Mantenha uma única fonte de luz. Se as sombras apontam em direções diferentes em elementos diferentes, a página parece inconsistente. Escolha uma direção — geralmente positiva offset-y (luz vinda do alto) — e mantenha-a em toda a aplicação.

3. Mantenha a opacidade baixa. Uma sombra com opacidade total parece como um contorno. Se você puder ver uma borda rígida, você já está com opacidade excessiva ou com o blur zerado. As sombras que parecem reais são sutis — elas dão volume, não contorno.

Camadas Múltiplas de Sombras para Criar Profundidade

O CSS permite camadas separadas de sombras em um único elemento. É aqui que você obtém profundidade real sem artefatos visuais.

Em vez de uma única sombra grande, tente duas: uma sombra próxima para contato e uma sombra difusa para elevação.

box-shadow:
  0 2px 4px rgba(0, 0, 0, 0.08),
  0 8px 24px rgba(0, 0, 0, 0.06);

A primeira camada fixa o elemento na superfície. A segunda cria a sensação de que ele está flutuando acima. Nenhuma delas é "a sombra" isoladamente — juntas, criam a ilusão de profundidade. Fisicamente, isso imita como uma fonte de luz forte próxima cria uma sombra rígida sob, enquanto a luz ambiente preenche um halo mais suave mais distante.

Sombras Internas: Quando a Luz Muda

O inset palavra-chave desenha a sombra dentro da borda do elemento em vez de fora. Os principais casos de uso são:

  • Estado de botão pressionado: Uma sombra interna leve em :active cria a sensação física de depressão, como um clique real em um botão.
  • Profundidade de campo de entrada: Campos de entrada e áreas de texto parecem inseridos da superfície com uma sombra interna na borda superior — um padrão que remonta ao design skeuomórfico, mas que ainda é claro.
/* Pressed button */
button:active {
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
}

/* Input field depth */
input {
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.10);
}

Desempenho: Quando usar filter: drop-shadow em vez disso

box-shadow aciona um repaint em cada mudança — não apenas no elemento, mas na camada pintada por baixo. Para animações ou interfaces com muita rolagem, isso adiciona um custo mensurável.

filter: drop-shadow() executado pelo compositor de GPU e é significativamente mais barato para sombras animadas. Ele também segue a forma realmente renderizada do elemento (incluindo áreas transparentes), enquanto box-shadow sempre segue o retângulo do modelo de caixa.

A regra prática: use box-shadow para sombras estáticas em elementos de layout. Use filter: drop-shadow em elementos animados ou em SVGs onde a sombra precisa se adaptar à forma visual em vez ao retângulo de contorno.

Tokens de Sombras para um Sistema de Design

Hardcode de valores de sombra por componente leva à inconsistência. Defina um conjunto pequeno de tokens de elevação uma vez, e então faça referência a eles em todos os lugares.

:root {
  --shadow-sm:
    0 1px 2px rgba(0, 0, 0, 0.05),
    0 1px 4px rgba(0, 0, 0, 0.04);

  --shadow-md:
    0 2px 4px rgba(0, 0, 0, 0.07),
    0 4px 12px rgba(0, 0, 0, 0.06);

  --shadow-lg:
    0 4px 8px rgba(0, 0, 0, 0.08),
    0 8px 24px rgba(0, 0, 0, 0.06);

  --shadow-xl:
    0 8px 16px rgba(0, 0, 0, 0.08),
    0 16px 48px rgba(0, 0, 0, 0.06);

  --shadow-2xl:
    0 12px 24px rgba(0, 0, 0, 0.10),
    0 32px 80px rgba(0, 0, 0, 0.08);
}

Cada token usa o método de duas camadas: uma sombra apertada para fixação de contato e uma sombra difusa para elevação. O blur e a opacidade aumentam à medida que a elevação aumenta — quanto mais distante da superfície, mais suave e espalhada a sombra se torna.

Esses valores funcionam bem em fundos brancos e cinza claro. Em fundos escuros, inverta a lógica — use cores mais claras e semitransparentes para sombras internas em vez de cores escuras para sombras projetadas.

Pule as Suposições

Se você estiver iterando sobre valores de sombra — especialmente ao camada múltipla de sombras ou testando diferentes opacidades — uma prévia em tempo real economiza muito tempo. O Gerador de Sombra de Caixa CSS no IO Tools permite ajustar todos os seis parâmetros em tempo real, empilhar múltiplas camadas de sombra e copiar o CSS gerado diretamente. Útil para ajustar novos tokens de design ou validar que uma sombra é correta antes de ser implementada na produção.

A diferença entre uma sombra que parece projetada e uma que parece colada geralmente reduz-se a três coisas: baixa opacidade, cor não-preta e deixar o blur fazer o trabalho que o spread nunca foi feito para fazer.

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?