NOTA: Sugiro verificar a resposta de @ Hamish abaixo; não envolve o "mascaramento" imperfeito na solução descrita aqui.
Você pode se aproximar com várias sombras de caixa; um para cada lado
box-shadow: 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 8px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/YJDdp/
Editar
Adicione mais duas sombras de caixa para a parte superior e a parte inferior da frente para mascarar o que sangra.
box-shadow: 0 9px 0px 0px white, 0 -9px 0px 0px white, 12px 0 15px -4px rgba(31, 73, 125, 0.8), -12px 0 15px -4px rgba(31, 73, 125, 0.8);
http://jsfiddle.net/LE6Lz/
Eu não estava satisfeito com a parte superior e inferior arredondada da sombra presente na solução de Deefour, então criei a minha.
inset
box-shadow
cria uma bela sombra uniforme com as partes superior e inferior cortadas.Para usar esse efeito nas laterais do seu elemento, crie dois pseudo-elementos
:before
e:after
posicionados absolutamente nas laterais do elemento original.Editar
Dependendo do seu design, você poderá usá-lo
clip-path
, como mostra a resposta de @ Luke. No entanto, observe que em muitos casos isso ainda resulta na diminuição da sombra na parte superior e inferior, como você pode ver neste exemplo:fonte
:after
necessidadestop: 0
também.display: inline-block
às pseudo classes para o seu exemplo funcionar. Em suma: ótima solução. +1not
requer quaisquer<div>
elementos auxiliares . :-)Tente isso, está funcionando para mim:
fonte
Abordagem clássica: spread negativo
O CSS box-shadow usa 4 parâmetros: h-shadow, v-shadow, blur, spread:
A sombra em v ( sombra vertical) é definida como 0.
O parâmetro blur adiciona o efeito gradiente, mas também adiciona um pouco de sombra nas bordas verticais (a que queremos nos livrar).
A propagação negativa reduz a sombra em todas as bordas: você pode brincar tentando remover essa pequena sombra vertical sem afetar muito a que fica nas laterais (é mais fácil para sombras pequenas, de 5 a 10px).
Aqui está um exemplo de violino .
Segunda abordagem: div absoluta do lado
Adicione uma div vazia ao seu elemento e estilize-a com posicionamento absoluto para que não afete o conteúdo do elemento.
Aqui o violino com um exemplo de sombra esquerda.
Terceiro: Sombra de máscara
Se você tiver um plano de fundo fixo, poderá ocultar o efeito de sombra lateral com duas sombras de máscara com a mesma cor do plano de fundo e desfoque = 0, exemplo:
Adicionei novamente uma propagação negativa (-3px) à sombra preta, para que ela não se estenda além dos cantos.
Aqui o violino .
fonte
Isso funciona bem para todos os navegadores:
fonte
DEMO
Você deve usar o múltiplo
box-shadow;
. A propriedade de inserção faz com que pareça agradável e internafonte
Outra maneira é com:
overflow-y:hidden
no pai com estofamento.http://jsfiddle.net/qqx221c8/
fonte
clip-path
é agora (2020) a melhor maneira que encontrei para obter sombras de caixa em lados específicos de elementos, especialmente quando o efeito necessário é uma sombra de "corte limpo" em bordas específicas , como esta:... em oposição a uma sombra atenuada / reduzida / diluída como esta:
Basta aplicar o seguinte CSS ao elemento em questão:
Onde:
Apx
define a visibilidade da sombra para a borda superiorBpx
certoCpx
inferiorDpx
esquerdaDigite um valor 0 para todas as arestas nas quais a sombra deve estar oculta e um valor negativo (o mesmo que o resultado combinado do raio de desfoque + valores de propagação -
Xpx + Ypx
) nas arestas nas quais a sombra deve ser exibida.fonte
clip-path
exemplo? Existem 2 trechos de código. O primeiro usaclip-path
e possui um corte completamente limpo, sem "cantos superior e inferior curvados" - muito parecido com a sua solução (mas com muito menos CSS necessário). O segundo trecho de código é um exemplo simplesmente para comparação - muitas soluções resultam em uma sombra de caixa dispersa que muitas vezes não é o que as pessoas desejam alcançar.box-shadow
propriedade para algo assim0 0 10px 5px rgba(0,0,0,0.75);
. Observe ospread
valor agregado e reduzidoblur-radius
.Isso funciona do meu lado. Espero que ajude você.
fonte
SOMBRA AGRADÁVEL NO LADO ESQUERDO E DIREITO PARA DIVS, IMAGENS OU CONTEÚDO INTERNO
Para uma boa sombra embutida nos lados direito e esquerdo das imagens ou qualquer outro conteúdo, use-o dessa maneira
*** O z-index: -1 faz um belo truque ao mostrar imagens ou objetos internos com inserções
fonte
Em algumas situações, você pode ocultar a sombra por outro contêiner. Por exemplo, se houver um DIV acima e abaixo do DIV com a sombra, você poderá usá
position: relative; z-index: 1;
-lo nos DIVs ao redor.fonte
Somente na horizontal, você pode enganar a sombra da caixa usando o estouro em sua div principal:
fonte
Outra idéia poderia ser a criação de um pseudo-elemento embaçado escuro, eventualmente com transparência para imitar a sombra. Torná-lo com um pouco menos de altura e mais largura ig
fonte
Você pode usar 1 div dentro para "apagar" a sombra:
Você pode jogar com "height:%;" e "largura:%;" para apagar a sombra que você deseja.
fonte
Por qualquer motivo, as respostas fornecidas aqui não funcionariam no meu caso. Então, eu fui criativo. Aqui está uma nova solução para você tudo o que usa
linear-gradient()
no lugar debox-shadow
.Embora eu não queira discutir o assunto, essa não é realmente uma "caixa" que você (nós) está tentando formar, então suponho que se possa dizer que
box-shadow
não fazia sentido, para começar.fonte
Eu tentei copiar o bootstrap shadow-sm apenas no lado direito, aqui está o meu código:
fonte