从 Internet Explorer 8 打印时,我需要为不透明度设置哪种 css 样式?

Posted

技术标签:

【中文标题】从 Internet Explorer 8 打印时,我需要为不透明度设置哪种 css 样式?【英文标题】:Which css style do I need to set for opacity when printing from Internet Explorer 8? 【发布时间】:2012-01-25 00:59:26 【问题描述】:

我制作了一个包含两个重叠图像的网页。我已将不透明度过滤器应用于顶部图像,以便两个图像都可读。对于大多数浏览器,包括 IE 和 Firefox,屏幕上的不透明度都是正确的。但是,当我从 IE 7 或 8 将页面打印到真实打印机或 PDF 打印机时,只打印顶部图像。从 IE 9 和 Firefox 打印时,顶部图像正确半透明。

下面是我的网页代码。

<html>
<body>
<DIV style="POSITION: absolute; WIDTH: 366px; HEIGHT: 439px; TOP: 100px; LEFT: 100px; Z-INDEX: 1;">
    <IMG style="POSITION: relative; WIDTH: 366px; HEIGHT: 439px;" src="below_picture.png">
</DIV>
<DIV style="POSITION: absolute; WIDTH: 366px; HEIGHT: 439px; TOP: 100px; LEFT: 100px; Z-INDEX: 390;">
    <IMG style="POSITION: relative; WIDTH: 366px; HEIGHT: 439px; FILTER: alpha(opacity=75);" src="above_picture.png">
</DIV>
</body>
</html>

【问题讨论】:

【参考方案1】:

IE8 使用-ms-filter 属性。

旧版 IE 需要filter: alpha(opacity=XX)

img.namedClass 
    position: relative;
    width: 366px;
    height: 439px;

    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: alpha(opacity=75);
    opacity: 0.75;

这个,级联,应该可以解决所有当前浏览器的问题

【讨论】:

【参考方案2】:

试试这个,它会在所有主流浏览器中产生模糊效果,包括

.CLASS_NAME 
  /* IE 8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

  /* IE 5-7 */
  filter: alpha(opacity=50);

  /* Netscape */
  -moz-opacity: 0.5;

  /* Safari 1.x */
  -khtml-opacity: 0.5;

  /* other intelligent browsers */
  opacity: 0.5;

【讨论】:

【参考方案3】:

我不得不说这是IE的内置问题,因为版本不直接支持不透明度,

参考link

现在您可以看到 IE7-8 不直接支持不透明度,您可以使用带有条件 css 的过滤器

代码link

.opaque2   // for IE5-7

    filter: alpha(opacity=50);

或者对于 IE8

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

内容的顺序应该是

.opaque 
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; // first!
    filter: alpha(opacity=50);                  // second!

除了您可以使用css3pie,它有一个 htc 文件,可以帮助您将 css3 规则添加到几乎所有不支持的浏览器..

我希望这会有所帮助..

【讨论】:

这也适用于打印吗? 如果在浏览器中允许打印背景和图像,那么我认为应该没有任何问题,那么我认为我们需要在每个 IE 上进行测试..(因为每个 IE 都有不同的想法):) 【参考方案4】:

我认为错误在于定位..您在父 div 上使用绝对位置,而您的孩子是位置:相对..它在 IE 上不起作用..然后在 div 上使用不透明度而不是在图像上..干杯..

【讨论】:

以上是关于从 Internet Explorer 8 打印时,我需要为不透明度设置哪种 css 样式?的主要内容,如果未能解决你的问题,请参考以下文章

为啥即使在模拟 Internet Explorer 8 文档模式时,Internet Explorer 11 也不支持条件注释?

Internet Explorer 中的图像加载超时

Internet Explorer 如何准备打印预览窗口

在同一台计算机上运行 Internet Explorer 6、Internet Explorer 7 和 Internet Explorer 8

Internet Explorer 8 无法播放 MIDI 文件

Internet Explorer 8 64 位和 Selenium 不工作