【问题标题】:Any way to make this css work in most IE versions?有什么方法可以让这个 css 在大多数 IE 版本中工作?
【发布时间】:2011-04-03 15:13:53
【问题描述】:

我有这段代码可以在图像上投下阴影:

.shadow{
box-shadow: -2px 2px 4px #666;
-webkit-box-shadow: -2px 2px 4px #666;
-moz-box-shadow: -2px 2px 4px #666;
filter: progid:DXImageTransform.Microsoft.dropShadow(color=#666, offX=-2, offY=2, positive=true);
}

这适用于 FF、Opera、Safari、Chrome,但不适用于 IE6(尚未测试任何其他 IE 版本)

谢谢

更新:

 <img src="......" class="shadow">

没有指定宽度或高度...

问题在于阴影清晰且完全黑色,而不是像阴影应该的那样褪色,就像在 FF 中那样。 很难形容……阴影是存在的,但它并没有褪色,就像图像后面的一个黑盒子。

【问题讨论】:

标签: javascript html css internet-explorer browser


【解决方案1】:

元素需要有布局(from MSDN):

几乎任何对象都可以应用过滤器。但是,应用滤镜的对象必须具有布局才能显示滤镜效果。简单地说,有布局意味着一个对象有一个定义的高度和宽度。某些对象,如表单控件,默认具有布局。所有其他可过滤对象通过设置 height 或 width 属性、将 position 属性设置为 absolute、将 writingMode 属性设置为 tb-rl 或将 contentEditable 属性设置为 true 来获得布局。

有关详细信息,另请参阅On having layout

另请注意,filter 语法仅适用于 IE6 和 IE7。 IE8 needs the -ms-filter property instead, and its value should be in quotes.

简而言之,要使其在 IE6 中工作,添加 zoom: 1,并使其在 IE8 中也能工作,添加 -ms-filter 属性(在 filter 属性之前!):

.shadow {
    box-shadow: -2px 2px 4px #666;
    -webkit-box-shadow: -2px 2px 4px #666;
    -moz-box-shadow: -2px 2px 4px #666;
    -ms-filter: "progid:DXImageTransform.Microsoft.dropShadow(color=#666, offX=-2, offY=2, positive=true)";
    filter: progid:DXImageTransform.Microsoft.dropShadow(color=#666, offX=-2, offY=2, positive=true);
    zoom: 1;
}

【讨论】:

  • 这一切到底是什么意思...注意编写小代码,因为它应该是这样的吗?检查我对它应用的元素的更新...
  • @Camran 查看他的编辑:尝试添加zoom: 1。不过,我怀疑是这样,因为默认情况下图像应该已经具有布局。
  • @Pekka,确实如此。如果它是一个 div 就可以了,但从 Camran 的更新来看,一开始没有问题。他已经有了阴影,只是不是模糊的,IE 不支持。
  • 这没什么区别。但无论如何,谢谢......这样在IE6中不可能有模糊的阴影?没有IE支持模糊阴影吗?
  • @Camran:不。 IE 不支持 CSS3,所以不要期望它的行为会像它那样。这与 IE 的 过滤器 一样好。您可以尝试使用 Glow 过滤器 (msdn.microsoft.com/en-us/library/ms532995(VS.85).aspx) 而不是 DropShadow 过滤器。这也不是你想要的,但也许它会做。
【解决方案2】:

使用类似的东西并根据您的需要进行更改:

.shadow{
box-shadow: -2px 2px 4px #666;
-webkit-box-shadow: -2px 2px 4px #666;
-moz-box-shadow: -2px 2px 4px #666;
cursor:hand;
height:160px; 
padding:10px;
filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=-2, OffY=2,  Color=#666, Positive='true');
}

它适用于 ie7 和 8(我没有 6)。

【讨论】:

  • 如果你想模糊你可以添加这个filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='5', MakeShadow='true', ShadowOpacity='0.40');
  • 在使用和不使用其他过滤器的情况下对其进行测试,并保留您喜欢的内容
【解决方案3】:

在 CSS 属性中使用冒号绝对是不正确的。处理这些 DX 过滤器的正确方法似乎是一个下划线:

filter: progid_DXImageTransform.Microsoft.dropShadow(color=#666, offX=-2, offY=2, positive=true);

【讨论】:

猜你喜欢
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
相关资源
最近更新 更多