IE8 :after, :before opacity bug [重复]

Posted

技术标签:

【中文标题】IE8 :after, :before opacity bug [重复]【英文标题】:IE8 :after, :before opacity bug [duplicate] 【发布时间】:2012-04-24 15:19:49 【问题描述】:

在 Internet Explorer 8 中,伪元素似乎不支持不透明度:

例子:

# div:after  
   content: '';
   background: red url('pattern.png') no-repeat left top;
   position: absolute;
   top: 0;
   left: 0;
   height: 300px;
   width: 300px;
   opacity: 0.10;
   filter: alpha(opacity=10);

有谁知道我该如何解决这个问题,所以我有不透明度为 0.10 的图案。

【问题讨论】:

IE8 根本不支持opacity。这不仅仅是一个伪元素问题。 确实如此。但是使用“过滤器”选项,您可以.. 但这也不起作用。 filter: alpha(opacity=50) 也不起作用。 现在您在哈希和元素选择器之间有了一个空格 (# div)。这是对应的代码吗? 让我们缩小范围: 请检查您的文档的 Doctype 是否没有将您的 IE8 呈现为 IE7(可以在开发人员工具中的“文档”下看到mode'),因为 IE7 缺乏对伪元素的支持,而 IE8 相当兼容(一些小错误,应该不会影响这一点)。 空间不是问题。当我提交问题时,它改变了它。文档模式:IE8标准。使用 IE9 内置工具检查 IE7 和 IE8 中的网站。 【参考方案1】:

filter 属性仅适用于 IE5-7,要支持 IE8 中的不透明度,您必须使用以下内容:

-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";

查看此code snippet from 'CSS-Tricks' on cross browser opacity 的完整参考。

【讨论】:

没错。即使使用 -ms-filter: (etc..) 它也不起作用。我用过滤器尝试了一切。我认为问题在于它是一个伪元素。有没有办法用 javascript 做到这一点? 您正在考虑订购吗?如果您同时添加filter-ms-filter,则后者应首先出现。 是的,我正在考虑订单。我已经测试了所有可能的方法。这不是代码中的错误或类似的错误。我需要使用 javascript 的解决方法。 filter:alpha(opacity=10) 在 IE8 中运行良好。

以上是关于IE8 :after, :before opacity bug [重复]的主要内容,如果未能解决你的问题,请参考以下文章

IE8 :nth-child 和 :before

:after 与 ::after

触发器before和after有啥区别?

那些年 IE 下踩过的坑

伪元素选择器:before 以及 :after

:before :after