我怎么能不在ie6上显示css投影?

时间:2011-05-17 14:12:39

标签: css filter drop-shadow

我想知道我是否可以忽略ie6上的css投影,而不使用条件语句来过滤css。

这是我目前的css:

/* Drop shadow */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');
box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);
-moz-box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);
-o-box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);
-webkit-box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);

也许-ms-filter-ie6: none或其他:P沿着这些行

5 个答案:

答案 0 :(得分:3)

在您的-ms-filter:行添加以下

* html -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(enabled=false)";

* html仅由IE6读取。但这是一个CSS黑客,这是非常糟糕的做法。你应该使用条件。

答案 1 :(得分:2)

使用IE-Only CSS Conditional Comment禁用IE6 / Win的专用过滤器:

<!--[if IE 6]>
    <style type="text/css">
        .drop-shadow {
            filter: progid:DXImageTransform.Microsoft.Shadow(enabled='0');
        }
    </style>
<![endif]-->

enabled”过滤器属性是一个布尔值,需要使用true或false值来启用或禁用过滤器:

0 = false(禁用过滤器)
1 = true(默认值。启用过滤器)

答案 2 :(得分:1)

IE6只知道filter,它不会识别-ms-filter样式,因此删除filter就可以了。缺点是这也会为IE7杀死它。

答案 3 :(得分:1)

您可以使用te /**/ hack。

filter/**/: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');

ie6应该忽略它,但我没有ie6来测试它。

正如贾斯汀萨特所说,这是一个黑客,你应该使用条件评论。

答案 4 :(得分:1)

我一直把条件放在<html>标签上:

<!DOCTYPE HTML>
<!--[if lt IE 7 ]>  <html class="ie ie6"><![endif]-->
<!--[if gte IE 7 ]> <html class="ie"><![endif]-->
<!--[if ! IE ]><!--><html class="notie"><!--<![endif]-->
<head>
    ...

然后在样式表中可以做(你现在只需要一个样式表,而html中没有内联样式)

.ie6 .drop-shadow
{
    filter:none; /* or whatever */
}

如果您需要其他IE的不同代码,您可以添加更多条件。我有一个项目,其中IE6,IE7,IE8和IE9对于至少一个项目都表现不同(但FF,Chrome和Safari都很接近),因此有五个不同的<html>标签。

如果您使用DreamWeaver,我听说您在</html>周围也需要相同的评论。

如果您需要为其他浏览器使用不同的代码,则必须使用jQuery或类似代码来添加类:如$('html').addClass('ff4');,但如果未启用js,则可能会出现意外情况。