Internet Explorer - CSS Shadow All Around

时间:2011-10-20 19:08:04

标签: css internet-explorer shadow dropshadow

我一直在为这个问题撕开我的头发,我想要一个简单的阴影围绕整个元素,除了顶部。我让它在Firefox和Chrome中运行没有问题。但IE有这种奇怪的“方向”设置,另外4个数字定义阴影。

有人可以帮我定义正确的CSS,这样除了顶部之外,它会在整个元素周围留下阴影。

/* For Firefox and Chrome */
-moz-box-shadow: 0px 0px 7px #000;
-webkit-box-shadow: 0px 0px 7px #000;
 box-shadow: 0px 0px 7px #000;

 /* for IE */
 -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=600, Color='#000000')";

4 个答案:

答案 0 :(得分:24)

阴影滤镜是单向的,方向是1到360度之间的数字。要生成具有偏移阴影的的阴影,您需要使用多个阴影滤镜:

   filter: progid:DXImageTransform.Microsoft.Shadow(Color=#cccccc, Strength=5, Direction=0),
     progid:DXImageTransform.Microsoft.Shadow(Color=#cccccc, Strength=5, Direction=90),
     progid:DXImageTransform.Microsoft.Shadow(Color=#cccccc, Strength=5, Direction=180),
     progid:DXImageTransform.Microsoft.Shadow(Color=#cccccc, Strength=5, Direction=270);

这是按照顶部/右侧/底部/左侧排序,并且改变任何一侧的强度将改变该阴影的大小。例如,2 5 5 10将产生一个直下投影,给出高度错觉。

答案 1 :(得分:8)

与上述答案类似(见下面的注释):

#boxContainer{ 
   filter:
        progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=0, Color='#000000'),
        progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=90, Color='#000000'),
        progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=180, Color='#000000'),
        progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=270, Color='#000000');
}

重要: 请记住,IE中还存在一个错误,它会将相同的样式应用于子元素。因此,如果愿意,您可能需要应用“计数器”/“Nullifier”。

示例:

#boxContainer button, #boxContainer div, #boxContainer span {
  /* Nullify Inherited Effect - Set "Strength=0" */
  filter:
    progid:DXImageTransform.Microsoft.Shadow(Strength=0, Direction=0, Color='#000000'),
    progid:DXImageTransform.Microsoft.Shadow(Strength=0, Direction=90, Color='#000000'),
    progid:DXImageTransform.Microsoft.Shadow(Strength=0, Direction=180, Color='#000000'),
    progid:DXImageTransform.Microsoft.Shadow(Strength=0, Direction=270, Color='#000000');
}

答案 2 :(得分:5)

请尝试使用“发光”滤镜:

http://msdn.microsoft.com/en-us/library/ms532995(v=VS.85).aspx

 DIV.aFilter {
    filter:progid:DXImageTransform.Microsoft.Glow(Color=blue,Strength=5);
    width: 150px;}

答案 3 :(得分:0)

这里有解决方案: http://www.artlebedev.com/tools/technogrette/html/filters-in-ie/ 结合看起来明显更好的发光和模糊滤镜,引用上面页面中的一个代码示例:

.shadowed .shadow-3
{
filter: progid:DXImageTransform.Microsoft.Glow(Color=#000000,Strength=1.0)
progid:DXImageTransform.Microsoft.Alpha(opacity=25)
progid:DXImageTransform.Microsoft.Blur(pixelradius=1.75, enabled='true');
-ms-filter: "progid:DXImageTransform.Microsoft.Glow(Color=#000000,Strength=1.0)"
"progid:DXImageTransform.Microsoft.Alpha(opacity=25)"
"progid:DXImageTransform.Microsoft.Blur(pixelradius=1.75, enabled='true')";
color: #111111;
top: -2px;
left: -2px;
}