2

我想知道是否可以在不使用条件语句过滤 css 的情况下忽略 ie6 上的 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沿着这些线

4

5 回答 5

3

在您的行下方添加以下-ms-filter:行应该可以工作:

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

* htmlIE6 只能读取。但这是一个 CSS hack,这是非常糟糕的做法。您应该改用条件句。

于 2011-05-17T14:18:14.013 回答
2

使用禁用 IE6/Win 专有过滤器的 IE-Only CSS 条件注释

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

启用”过滤器属性是一个布尔值,需要一个真或假值来启用或禁用过滤器:

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

于 2011-05-17T14:39:14.577 回答
1

IE6只知道filter,它不会识别-ms-filter样式,所以丢弃filter就可以了。缺点是这也会杀死 IE7。

于 2011-05-17T14:26:36.413 回答
1

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

filter /**/ : progid:DXImageTransform.Microsoft.Shadow(强度=4, 方向=135, 颜色='#000000');

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

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

于 2011-05-17T14:44:21.677 回答
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 可能会出现意外情况。

于 2011-05-25T07:00:13.383 回答