Existe uma maneira de soltar a sombra apenas no fundo? Eu tenho um menu com 2 imagens ao lado do outro. Não quero uma sombra certa, porque ela se sobrepõe à imagem certa. Eu não gosto de usar imagens para isso, então existe uma maneira de soltá-lo apenas na parte inferior, como:
box-shadow-bottom: 10px #FFF;
ou similar?
-moz-box-shadow: 0px 3px 3px #000;
-webkit-box-shadow: 0px 3px 3px #000;
box-shadow-bottom: 5px #000;
/* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000');
box-shadow-bottom
que não existe e não é suportada por ninguém. Consulte nicolasgallagher.com/css-drop-shadows-without-images/demo para obter técnicas legítimas de sombra de caixa.filter
também funcionarão no IE8 e IE9. Não há necessidade-ms-filter
neste caso.Respostas:
ATUALIZAÇÃO 4
O mesmo que a atualização 3, mas com css moderno (= menos regras), para que nenhum posicionamento especial no pseudo elemento seja necessário.
ATUALIZAÇÃO 3
Todas as minhas respostas anteriores têm usado marcação extra para criar esse efeito, o que não é necessariamente necessário. Eu acho que essa é uma solução muito mais limpa ... o único truque é brincar com os valores para obter o posicionamento correto da sombra, bem como a força / opacidade correta da sombra. Aqui está um novo violino, usando pseudo-elementos :
http://jsfiddle.net/UnsungHero97/ARRRZ/2/
HTML
CSS
ATUALIZAÇÃO 2
Aparentemente, você pode fazer isso com apenas um parâmetro extra para o CSS box-shadow, como todos os demais apontaram. Aqui está a demonstração:
http://jsfiddle.net/K88H9/821/
CSS
Essa seria uma solução melhor. O parâmetro extra adicionado é descrito como:
ATUALIZAR
Confira a demonstração em jsFiddle: http://jsfiddle.net/K88H9/4/
O que eu fiz foi criar um "elemento de sombra" que se esconderia atrás do elemento real que você gostaria de ter uma sombra. Eu fiz a largura do "elemento de sombra" ser exatamente menos larga que o elemento real em 2 vezes a sombra que você especificar; então eu alinhei corretamente.
HTML
CSS
Resposta original
Sim, você pode fazer isso com a mesma sintaxe que você forneceu. O primeiro valor controla o posicionamento horizontal e o segundo valor controla o posicionamento vertical. Portanto, basta definir o primeiro valor como
0px
e o segundo como o deslocamento que você deseja da seguinte maneira:Para mais informações sobre sombras de caixas, confira estas:
Eu espero que isso ajude.
fonte
box-shadow: 0 2px 4px #000000
é um valor de desfoque. Veja aqui http://jsfiddle.net/K88H9/7/ . Mas você notará que há um pouco de desfoque à esquerda e à direita do elemento, onde na solução de Hristo não existe.box-shadow-bottom
, embora criativo, não existe realmente.Basta usar o parâmetro spread para diminuir a sombra:
Demonstração ao vivo: http://dabblet.com/gist/a8f8ba527f5cff607327
Para não ver nenhuma sombra nas laterais, o (valor absoluto do) raio de propagação (quarto parâmetro) precisa ser o mesmo que o raio de desfoque (terceiro parâmetro).
fonte
box-shadow:0 8px 4px -6px
e você verá apenas a sombra inferior!Se você tiver uma cor fixa no plano de fundo, poderá ocultar o efeito de sombra lateral com duas sombras de máscara com a mesma cor de plano de fundo e desfoque = 0, por exemplo:
Observe que a sombra preta deve ser a última e tem uma margem negativa (-3px) para impedir que ela se estenda além dos cantos.
Aqui o violino (mude a cor das sombras mascaradas para ver como ele realmente funciona).
fonte
transparent
cor para as sombras mascaradas, não?Eu acho que é isso que você está procurando?
fonte
É sempre melhor ler as especificações . Não há
box-shadow-bottom
propriedade e, como Lea aponta, você deve sempre colocar a propriedade não prefixada na parte inferior, após as prefixadas.Então é:
fonte
Que tal usar apenas uma div contendo o estouro definido como oculto e algum preenchimento na parte inferior? Esta parece ser a solução mais simples.
Lamento dizer que não pensei nisso, mas vi em outro lugar .
Como dito por Jorgen Evens .
fonte
padding-bottom
(digamos 5px), você também pode definir um valor negativomargin-bottom
(de -5px) para compensar o espaço adicionado.Você também pode usar
clip-path
para recortar (ocultar) todas as arestas que estão transbordando, mas a que você deseja mostrar:Consulte caminho do clipe (MDN) . Os argumentos para
polygon
são o ponto superior esquerdo , o ponto superior direito , o ponto inferior direito e o ponto inferior esquerdo . Ao definir a borda inferior como200%
(ou qualquer número maior que100%
), você restringe seu estouro apenas à borda inferior.fonte
Eu também precisava de uma sombra, mas apenas sob uma imagem e coloquei um pouco à esquerda e à direita. Isso funcionou para mim:
O elemento ao qual é aplicado é uma imagem em toda a página (980px x 300px).
Se ajudar a mexer nas configurações, elas serão executadas da seguinte maneira:
sombra horizontal, sombra vertical, distância do borrão, propagação (tamanho da sombra) e cor.
fonte
É melhor procurar sombra:
esse código está sendo usado atualmente na web stackoverflow.
fonte
Esta caneta de código (não por mim) demonstra uma maneira super simples de fazer isso e os outros lados sozinhos:
https://codepen.io/zeckdude/pen/oxywmm
fonte
Se o seu plano de fundo for sólido (ou você pode reproduzi-lo usando CSS), use o gradiente linear dessa maneira:
Isso gerará um gradiente de 5px na parte inferior do elemento, do preto com 30% de opacidade ao completamente transparente. O restante do elemento possui fundo branco. É claro que, alterando as duas últimas paradas de cores do gradiente linear, você pode tornar o fundo completamente transparente.
fonte
Você também pode fazer um gradiente na parte inferior - isso foi útil para mim porque a sombra que eu queria estava em um elemento que já era semitransparente, para que eu não precisasse me preocupar com nenhum recorte:
Apenas faça com que as propriedades "bottom" e "height" correspondam e defina seus valores de rgba para o que você deseja que eles estejam na parte superior / inferior da sombra
fonte
Você pode fazer isso assim:
Sintaxe geral:
Exemplo: queremos fazer apenas uma sombra da caixa inferior com a cor vermelha,
para fazer isso, precisamos definir todas as opções de lados, onde temos que definir as opções de sombra da caixa inferior e definir todas as outras como vazias da seguinte maneira:
fonte
atualize para outra pessoa sua resposta nos lados transparentes, em vez do branco, para que também funcione em outros fundos coloridos.
fonte
sombra interior
fonte