有没有办法让阴影只落在底部?我有一个菜单,两个图像彼此相邻。我不想要一个正确的阴影,因为它重叠了正确的图像。我不喜欢使用图像,所以有没有一种方法只把它放在底部,比如:

box-shadow-bottom: 10px #FFF;或类似的吗?

-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');

当前回答

如果你在背景上有一个固定的颜色,你可以用两个背景颜色相同的掩蔽阴影来隐藏侧影效果,并且blur = 0,示例:

box-shadow: 
    -6px 0 white,         /*Left masking shadow*/
    6px 0 white,          /*Right masking shadow*/
    0 7px 4px -3px black; /*The real (slim) shadow*/

注意,黑色阴影必须是最后一个,并且有一个负扩散(-3px),以防止它延伸到角落之外。

这里是小提琴(改变掩蔽阴影的颜色,看看它是如何工作的)。

div { 宽度:100 px; 身高:100 px; 边框:1px纯粉色; Box-shadow: -6px 0白色,6px 0白色,0 7px 5px -2px黑色; } < div > < / div >

其他回答

如果你的背景是实心的(或者你可以使用CSS重现它),你可以这样使用线性渐变:

div { 背景-图像:线性梯度(到顶部,rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 5px, #fff 5px, #fff 100%) } < div > < p > Foobar < / p > < p > < / p >测试 < / div >

这将在元素底部生成5px的渐变,从不透明度30%的黑色到完全透明。元素的其余部分为白色背景。当然,改变线性渐变的最后2个色点,你可以使背景完全透明。

你也可以在底部做一个渐变——这对我很有帮助,因为我想要的阴影是在一个已经是半透明的元素上,所以我不必担心任何剪辑:

&:after {
      content:"";
      width:100%;
      height: 8px;
      position: absolute;
      bottom: -8px;
      left: 0;
      background: linear-gradient(to bottom, rgba(0,0,0,0.65) 0%,rgba(0,0,0,0) 100%);
    }

只需使“bottom”和“height”属性匹配,并设置你的rgba值为任何你想要它们在阴影的顶部/底部

你可以这样做:

一般的语法:

selector {
   box-shadow: topBoxShadow, bottomBoxShadow, rightBoxShadow, leftBoxShadow
}

示例:我们只想创建一个红色的底框阴影,

因此,为了做到这一点,我们必须设置所有的边选项,我们必须设置底部框的阴影选项,并将所有其他选项设置为空,如下所示:

.box {
     -moz-box-shadow: 0 0 0 transparent ,0 0 10px red, 0 0 0 transparent, 0 0 0 transparent
     -o-box-shadow: 0 0 0 transparent ,0 0 10px red, 0 0 0 transparent, 0 0 0 transparent
     -webkit-box-shadow: 0 0 0 transparent ,0 0 10px red, 0 0 0 transparent, 0 0 0 transparent
     box-shadow: 0 0 0 transparent ,0 0 10px red, 0 0 0 transparent, 0 0 0 transparent
}

阅读说明书总是好的。没有box-shadow-bottom属性,就像Lea指出的,你应该总是把没有前缀的属性放在底部,放在有前缀的属性之后。

所以它是:

.shadow { -webkit-box-shadow: 0px 2px 4px #000000; -moz-box-shadow: 0px 2px 4px #000000; Box-shadow: 0px 2px 4px #000000; } <div class="shadow">一些内容</div>

我还需要一个阴影,但只是在一个图像下,并设置在稍微左和右。这招对我很管用:

.box-shadow {
   -webkit-box-shadow: 5px 35px 30px -25px #888888;
      -moz-box-shadow: 5px 35px 30px -25px #888888;
           box-shadow: 5px 35px 30px -25px #888888;
}

应用于的元素是一个页面宽的图像(980px x 300px)。

如果它有助于摆弄设置时,他们运行如下:

水平阴影,垂直阴影,模糊距离,扩散(即阴影大小)和颜色。