Tutorial CSS Box Shadow: um guia passo a passo (+ exemplos)

Publicados: 2022-03-09

Por que a propriedade CSS box-shadow merece seu próprio tutorial? Porque, como você verá a seguir, é uma das propriedades mais complexas que recebe vários valores ao mesmo tempo. Isso pode tornar especialmente desafiador para iniciantes.

Se até agora você lutou para usar box-shadow corretamente, você veio ao lugar certo. No guia abaixo, veremos tudo o que há para saber sobre essa propriedade CSS. Falaremos sobre o que ele faz, como usar sua sintaxe corretamente, alguns exemplos legais box-shadow CSS e, finalmente, algumas ferramentas geradoras que facilitam o trabalho com ele.

O que é CSS Box Shadow?

Mesmo se você não estiver ciente da propriedade CSS box-shadow até agora, provavelmente já a viu em ação na web.

exemplo de tutorial de sombra de caixa css

Acima está um bom exemplo de como é na natureza (mesmo que eu tenha aumentado um pouco aqui para enfatizar). box-shadow é basicamente o que o nome diz: permite que você adicione uma sombra projetada ao quadro de quase qualquer elemento. A sombra também aderirá à forma de sua âncora, seja ela quadrada, retangular, redonda ou oval. Isso vale até mesmo quando você define uma propriedade border-radius .

sombras de caixa aderindo ao exemplo de forma de elemento âncora

Na web, as pessoas o usam para criar vários efeitos diferentes e veremos alguns exemplos interessantes box-shadow abaixo. Por enquanto, vamos falar sobre como funciona no nível mais básico.

Sintaxe básica da sombra da caixa

Quando você olha para um elemento com uma sombra de caixa usando as ferramentas de desenvolvedor do navegador, você encontrará uma marcação como esta:

 box-shadow: inset 0 25px 40px 0 rgba(0, 0, 0, 0.3);

Parece um pouco complicado, certo?

Mas não se preocupe, você não precisa de todas essas declarações o tempo todo. Além disso, uma vez que você entende como eles funcionam, não parece mais tão confuso quanto no começo.

Como você pode ver acima, box-shadow pode ter até seis valores. Vamos analisá-los um por um.

deslocamento-x

O primeiro valor é a distância horizontal da sombra projetada do lado de seu elemento âncora. Um valor positivo move-o para a direita, um negativo para a esquerda.

Você pode usar todos os tipos de dados CSS comuns que denotam comprimento para esse valor, como px , em , vh e muito mais. Os mais usados ​​são px e em .

exemplo de deslocamento x

deslocamento-y

Igual ao anterior, mas para o eixo vertical. Os valores positivos movem a sombra abaixo do elemento, os negativos acima.

deslocamento y exemplo

raio de desfoque

Isso define o desfoque da sombra da caixa. Quanto maior o valor, mais borrado será. blur-radius também aceita todas as denominações comuns de comprimento de CSS, mas nenhum valor negativo.

exemplo de raio de desfoque

raio de propagação

Este controla a propagação da sombra além da altura ou largura de seu elemento. Quanto maior o comprimento, maior o spread. Você também pode usar números negativos para introduzir o encolhimento.

exemplo de raio de propagação

cor

Como você provavelmente pode adivinhar, isso permite que você defina a cor da sombra da caixa de todas as maneiras usuais. É mais frequentemente indicado em valores hexadecimais (por exemplo #ededed ) ou rgba (por exemplo rgba(46, 182, 142, 0.9) ). O último também permite controlar a opacidade, que é comumente usada para sombras projetadas.

exemplos de cores de sombra de caixa

Observe que, se você não definir uma cor, o navegador usará a cor de texto usada no momento.

inserir

Por fim, você pode opcionalmente adicionar inset no início da declaração. Isso altera a sombra de uma sombra projetada para uma sombra dentro do elemento. Ele aparece dentro da borda, acima do plano de fundo, mas abaixo do conteúdo do elemento, portanto, não cobrirá nenhum texto, por exemplo.

exemplos de sombras de caixa de inserção

Usando os valores em ordem

Aqui está a ordem em que os valores da propriedade box-shadow aparecem.

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

Para atribuir uma sombra de caixa, você precisa de pelo menos dois valores de comprimento. O navegador usará automaticamente aqueles para offset-x e offset-y . Se você adicionar um terceiro, ele será interpretado como blur-radius , um quarto como spread-radius . inset e color são opcionais e podem aparecer no final ou no início e em qualquer ordem. O CSS abaixo terá o mesmo resultado.

 box-shadow: 20px 20px 10px 0 inset rgba(0, 0, 0, 0.5); box-shadow: 20px 20px 10px 0 rgba(0, 0, 0, 0.5) inset; box-shadow: inset 20px 20px 10px 0 rgba(0, 0, 0, 0.5); box-shadow: rgba(0, 0, 0, 0.5) 20px 20px 10px 0 inset; box-shadow: rgba(0, 0, 0, 0.5) inset 20px 20px 10px 0; box-shadow: inset rgba(0, 0, 0, 0.5) 20px 20px 10px 0;

Atribuindo várias sombras de caixa

Algo que nem todos sabem é que você pode definir várias sombras de caixa para o mesmo elemento. Para isso, basta fornecer mais de um grupo de valores e separá-los por vírgulas.

 box-shadow: 20px 20px 10px 0 rgba(0, 0, 0, 0.5), -20px -20px 10px 0 olive;

O código acima fica assim:

exemplo de várias sombras de caixa

Você também pode usar isso para criar linhas ao redor dos elementos. Para isso, basta adicionar várias sombras em cores diferentes e definir seus deslocamentos e desfoque para zero.

 box-shadow: 0 0 0 20px rgba(0, 0, 0, 0.5), 0 0 0 10px olive;

Isso resulta em contornos com cores diferentes:

várias sombras de caixa como exemplo de contornos

Observe que isso não afeta as dimensões do modelo de caixa, portanto, as sombras de caixa não adicionam ao tamanho geral de um elemento da mesma forma que a margin ou a border .

Compatibilidade do navegador

A compatibilidade do navegador para box-shadow não é algo com o qual você precisa se preocupar. É uma propriedade CSS muito estabelecida, aceita por praticamente todos os navegadores, incluindo marcação como inset e várias sombras.

Compatibilidade do navegador css box shadow

Para oferecer suporte a versões mais antigas de alguns navegadores, é comum incluir as -webkit-box-shadow e -moz-box-shadow com os mesmos valores. No entanto, para as versões mais recentes dos navegadores mais comuns, isso não é mais necessário.

Exemplos de sombra de caixa CSS

A seguir, neste tutorial box-shadow , queremos examinar alguns exemplos de sombras de caixa CSS para que você possa ver o que é possível com essa propriedade. Passaremos de aplicativos bastante padrão para aplicativos mais extraordinários porque, como você verá, você pode fazer coisas realmente interessantes com ele.

Adicionar uma sombra a um botão

Os botões geralmente são um elemento que tem uma sombra de caixa aplicada a eles. Isso porque é uma boa maneira de fazê-los se destacar na página. Afinal, se você incluir um botão, geralmente deseja que as pessoas cliquem nele. Para incentivá-los a fazer isso, aqui está um exemplo simples de como fazer isso com uma sombra de caixa.

sombra de caixa para exemplo de botão

A marcação que acompanha se parece com isso:

 box-shadow: 0px 11px 12px rgba(0, 0, 0, 0.2);

Sombra Caixa Suave

Se você deseja criar uma sombra de caixa CSS relativamente suave, você trabalha principalmente com desfoque e propagação enquanto define os deslocamentos para 0 . Dessa forma, a sombra não ganha uma forma distinta, mas apenas aparece suavemente nas bordas.

exemplo de sombra de caixa suave

Para obter o efeito acima, você pode usar a seguinte marcação:

 box-shadow: 0 0 50px 10px #999;

Essa também é uma ótima maneira de criar uma sombra de caixa em todos os lados de um elemento. Se você quiser torná-lo mais distinto, basta aumentar a propagação, diminuir o desfoque e usar uma cor mais escura.

Várias sombras de caixa

Os exemplos finais box-shadow são para usar várias sombras de uma só vez. Isso oferece diferentes possibilidades. Por um lado, você pode introduzir uma sombra de caixa de várias etapas e desbotamento legal.

exemplo de várias sombras de caixa de desvanecimento

É surpreendentemente simples: você só precisa empilhar sombras de caixa umas sobre as outras com deslocamentos uniformemente crescentes enquanto diminui a opacidade ao mesmo tempo. A propósito, ao usar muitas sombras de caixa, ajuda escrever as declarações em linhas separadas em vez de uma declaração longa. Facilita muito o entendimento.

 box-shadow: 10px 10px rgba(0, 0, 0, 0.4), 20px 20px rgba(0, 0, 0, 0.3), 30px 30px rgba(0, 0, 0, 0.2), 40px 40px rgba(0, 0, 0, 0.1), 50px 50px rgba(0, 0, 0, 0.05);

Você também pode levar isso adiante introduzindo sombras de caixa branca com um valor spread-radius negativo no meio, resultando na ilusão de vários elementos em cima uns dos outros.

várias sombras de caixa com exemplo de espaço em branco

Por que o valor do spread negativo? Porque senão as sombras da caixa branca cobririam as que estão abaixo delas. O valor negativo os reduz para que a cor por trás possa brilhar. Abaixo está a marcação que você precisa se quiser introduzir um efeito semelhante em seu próprio site:

 box-shadow: 10px 10px 0px -3px rgba(255, 255, 255), 10px 10px rgba(0, 0, 0, 0.4), 20px 20px 0px -3px rgba(255, 255, 255), 20px 20px rgba(0, 0, 0, 0.3), 30px 30px 0px -3px rgba(255, 255, 255), 30px 30px rgba(0, 0, 0, 0.2), 40px 40px 0px -3px rgba(255, 255, 255), 40px 40px rgba(0, 0, 0, 0.1), 50px 50px 0px -3px rgba(255, 255, 255), 50px 50px rgba(0, 0, 0, 0.05);

O exemplo final para várias sombras de caixa CSS é o método mencionado acima de definir deslocamentos e desfoque para 0 . Como vimos acima, resulta em elementos com vários contornos, coloridos neste caso. No entanto, isso só funciona porque o valor spread-radius aumenta para cada sombra da caixa.

exemplo de várias sombras de caixa css coloridas

Se você quiser experimentar isso por si mesmo, você pode começar com isso:

 box-shadow: 0px 0px 0px 3px red, 0px 0px 0px 6px orange, 0px 0px 0px 9px yellow, 0px 0px 0px 12px green, 0px 0px 0px 15px blue, 0px 0px 0px 18px indigo, 0px 0px 0px 21px violet;

Melhores geradores de sombra de caixa

Como abordamos, box-shadow assume muitos valores. Portanto, pode demorar um pouco de tentativa e erro até chegar ao tipo de sombra que você deseja.

Para facilitar, existem muitas ferramentas geradoras de sombra de caixa por aí que permitem que você brinque com seus controles, veja os resultados imediatamente e simplesmente copie a marcação quando estiver satisfeito.

exemplo de ferramenta gerador de sombras de caixa css

Aqui estão as melhores opções para geradores de sombra de caixa:

  • box-shadow.dev — Esta ferramenta de propósito único tem todas as funcionalidades que você precisa e a melhor interface de usuário do grupo. Você pode usar inset , criar várias sombras de caixa, controlar os deslocamentos, desfocar e espalhar por meio de controles deslizantes e inserir cores manualmente. Quando estiver satisfeito, clique em Mostrar código para copiar a marcação CSS. A única desvantagem é que ele não fornece código para navegadores mais antigos.
  • CSSmatic Box Shadow CSS Generator — Semelhante ao acima. Permite controlar as propriedades box-shadow meio de controles deslizantes e também inserir números manualmente. Tem seu próprio controle de opacidade, o que é bom. Por outro lado, está faltando funcionalidade para várias sombras. A marcação de código que você obtém inclui navegadores mais antigos.
  • Box Shadow CSS Generator — Uma opção sólida que também possui uma capacidade de seleção de cores e também fornece código para navegadores mais antigos. Você pode copiá-lo com um simples clique. Tem controle de opacidade, mas só pode criar uma sombra projetada.
  • CSS3gen CSS3 Box Shadow Generator — Outro gerador de sombra. Um recurso interessante aqui é que, em vez de deslocamentos x e y, você pode selecionar o ângulo e a distância da sombra e a ferramenta fará o resto automaticamente. Por algum motivo spread-radius e o inset têm seu próprio menu. O CSS que você pode simplesmente copiar e colar também inclui marcação para gerações de navegadores mais antigas.

Considerações Finais: CSS Box Shadow

A propriedade box-shadow pode ser esmagadora no início. É uma daquelas propriedades que aceita muitos valores, então pode parecer mais complicada do que realmente é. Espero que este tutorial de sombra de caixa CSS tenha colocado esse sentimento de lado.

Acima, vimos o que é CSS box-shadow e como funciona. Explicamos a sintaxe, os valores e como eles funcionam juntos. Além disso, analisamos vários exemplos de como usar sombras de caixa CSS na vida real, incluindo marcação que você pode usar imediatamente. Finalmente, para aqueles que querem um pouco de ajuda, listamos vários geradores box-shadow CSS que podem fazer muito trabalho pesado para você.

Até agora, você deve se sentir capaz de usar esse recurso CSS em seu site. Estamos ansiosos para ver o que você fará com ele.

Como você está usando sombra de caixa CSS em seu site? Algum caso de uso interessante que não abordamos acima? Deixe-nos saber nos comentários abaixo!