IE CSS Bug系列:PNG图像与背景颜色错配

影响版本

该bug出现在:IE8,IE7,IE6

表现

即使使用同样的颜色代码,CSS里指定的颜色会与PNG图像里使用的颜色不同。

教程日期

2009.08.09 07:07:46 星期日

描述

你制作了一个Logo或某些高端洋气的艺术图并将其保存为PNG图片。然后你把它作为背景(或者一个正常图像)并用与此图片中一样的颜色将其包围起来。但很可惜的是,它们在IE中显示出完全不同的色调(有人说这也会出现在Mac系统中的safari浏览器,我没Mac没法测试),让我们来看看:

演示

由于该bug的天然特性,这个演示在一个单独的页面上

HTML Code

<div></div> 

CSS Code:

div { 


    width: 500px; 


    height: 500px; 


    background: #74822D url(pngcrush.png) no-repeat center; 


} 

这个“bug”有意思的地方是,它并不是个真正的bug:),这是一个特性!更有意思的是,我发现人们开始在找“网站安全色”,要是颜色不对,就觉得他们自己用“错”了颜色。不管怎样,空谈已经太多了,让我们来解决掉这个破事儿:

解决方案

以下是针对上面所说的bug的解决方案,按照解决方案的类型排列

方案(伪bug)

解决日期

2009.08.09 07:22:32 星期日

修复版本

所有受影响的版本

描述

当我说它是一个功能而不是bug的时候,我的意思是:IE浏览器是支持“PNG咖玛轮廓”的。我找到过一个页面似乎也在讨论这个问题: The Sad Story of PNG Gamma ”Correction” by Henri Sivonen。对于这个bug,我们的解决方案是简单地从PNG图片里删除咖玛轮廓,来看看修复后的演示:

由于bug的天然特性,演示展示在单独的页面上查看。

HTML Code:

<div></div> 

CSS Code:

div { 


    width: 500px; 


    height: 500px; 


    background: #74822D url(pngcrush_fixed.png) no-repeat center; 


} 

我们的代码保持不变。我所做的是用pngcrush程序(注1)来修复图片。在这里我要指出的是,你可以从一开始就设置你的编辑器使其不保存咖玛轮廓。看起来会在默认情况下调皮地保存这些轮廓的编辑器只有Photoshop;因为我是一个开心的Gimp用户,我自己的PNG图片没有这样的问题,但这也意味着我并不能教你如何去配置photoshop不去保存这些轮廓。

不管怎样,pngcush也会减少图片的大小,所以为什么不试一下呢。 我用来修复演示图片的命令是这样 的:pngcrush -brute_force -rem gAMA -rem cHRM -rem sRGB -rem iCCP pngcrush.png pngcrush_fixed.png。 其中的参数解释已经超出了本教程的范畴 –还是去读那些操蛋的手册吧。

在Ubuntu系统中,pngcrush可以从Universe repos库里获取: sudo apt-get install pngcrush

相关推荐