我只是想知道可以使用CSS在IE中应用两个不同的过滤器。
所以,我需要使用透明的PNG以及div
的一些不透明度。是否可以同时使用它们?
我的透明制造商行看起来像这样:
li.item .item-texture {
background: none transparent scroll repeat 0% 0% !important;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/ie/articles/item-content-hov.png', sizingMethod='scale') !important;
}
我尝试添加另一行(filter: alpha(opacity=50);
)并使用逗号(.. 'scale') !important, alpha(opacity=50);
)分隔过滤器,但它没用。
答案 0 :(得分:15)
很抱歉,但上面选择的答案不正确。您可以在IE中应用多个过滤器,但它们需要用一个或多个空格分隔。
空格之前的逗号也可以使用,但前提是它跟在一个右括号之后。所以没有gray
等参数的IE 4.0过滤器在这种情况下不起作用。最好只将空间作为分隔符。
如果您转到上面给出的链接:http://msdn.microsoft.com/en-us/library/ms532847(v=vs.85).aspx,然后点击following example link(当然在IE中),您会看到旋转和模糊都应用于第二张图片。从“查看源”,图像标记为:
<img id=image2 src="/workshop/samples/author/dhtml/graphics/sample.jpg"
style="filter:progid:DXImageTransform.Microsoft.Blur(strength=50),
progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"
height="165px" width="256px" border="0" alt="ocean beach">
我有点成功地模拟了IE7和8中盒子阴影的“传播”(尽管成功取决于你认为它看起来多么可接受),使用:
filter: progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=0)
progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=90)
progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=180)
progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=270);
以便阴影从div的所有边传播。我还在div上组合了包含渐变的阴影。然而,并非所有这一切都没有自己的危险。在上面的例子中,阴影有布局,你必须调整边距以适应它们的大小。此外,由于IE是IE,其中一些过滤器的组合可能会产生意想不到的后果,从而导致开发变通方法,放弃方法,以及拔掉一个人的头发。
在您问题的原始示例中,如果列出多个过滤器,则前一个过滤器将被后续过滤器覆盖,就像任何其他CSS属性一样。在第二个示例中,“!important”需要完全位于样式的末尾,否则整个CSS块将被丢弃,因为它格式错误。 (实际上,重要的是需要被彻底抛弃。关于你需要使用它的唯一原因是,如果你正在开发第三方代码并需要保护你的标签免受另一个人!你无法控制的重要开心的开发人员如果你的风格被无意覆盖,你需要一个更具体的声明。)
答案 1 :(得分:7)
不能超过1个过滤器属性,因为IE只会使最后一个过滤属性生效。
注意:由于这似乎得到了一些投票,我想澄清这并不意味着你不能应用多个过滤器,只是你只能使用1 {{1 } 属性。如果您尝试应用多个过滤器并将它们分成多个属性,则只有最后一个过滤器才会生效。
根据MSDN的以下文章,它们不是用逗号分隔,而是用空格分隔:http://msdn.microsoft.com/en-us/library/ms532847(v=vs.85).aspx
另请注意,某些IE过滤器(包括alpha)要求元素具有布局才能正确应用:http://www.satzansatz.de/cssd/onhavinglayout.html
答案 2 :(得分:0)
逗号被忽略。您需要一个空格或换行符来粘贴多个过滤器。
progid:xxx progid:yyy / works
progid:xxx, progid:yyy / works
progid:xxx
progid:yyy / works
progid:xxx,progid:yyy / will not work