如何使PNG透明性在本机不支持的浏览器中正常工作?
我们(心爱的)设计师一直在创建具有透明背景的PNG文件,以便在我们的应用程序中使用。我想确保PNG的此功能也可以在"较旧的"浏览器中使用。最好的解决方案是什么?
下面的编辑
@mabwi&@syd我是否同意使用PNG并不是重点。这是我需要解决的问题!
@Tim Sullivan IE7.js看起来很酷,但是我不希望介绍应用程序的所有其他更改。我想要一个专门解决PNG问题的解决方案。感谢链接。
解决方案
回答
我可能会误会,但是我可以肯定IE6和更少的版本不会对PNG文件进行透明处理。
我有两个使用的"解决方案"。创建具有透明度的GIF文件并在各处使用它们,或者仅将它们用于具有条件样式表的IE 6及更早版本。仅当我们将它们用作背景等时,第二个才真正起作用。
回答
IE7.js将为IE6中的PNG(包括透明性)提供支持。
回答
这是一篇很棒的文章,解释并显示了如何在较旧的浏览器中处理PNG透明性:http://www.alistapart.com/stories/pngopacity/
回答
我相信所有浏览器都支持PNG-8. 它没有Alpha混合,但确实具有透明背景。
回答
我发现这里看起来是一个很好的解决方案:单位互动->实验室->单位PNG修复
NETTUTS上的PNG修复选项列表中也包含了更新单位PNG
以下是他们网站上的亮点:
- 非常紧凑的javascript:不到1kb!
- 修复了由IE过滤器属性引起的一些交互性问题。
- 适用于img对象和背景图像属性。
- 自动运行。我们不必定义类或者调用函数。
- 允许自动宽度和自动高度元素。
- 超级简单的部署。
回答
I might be mistaken, but I'm pretty sure IE6 and less just don't do transparency with PNG files.
你有点是,不是。
IE6本身不支持它们。
但是,IE支持疯狂的自定义javascript / css和COM对象(这是它们最初实现XmlHttpRequest的方式)
所有这些黑客基本上都是这样做的:
- 找到所有的png图像
- 使用DirectX图像过滤器加载它们并以IE理解的某种格式生成透明图像
- 将图像替换为过滤后的副本。
回答
我搞砸了尝试用.pngs制作网站,这是不值得的。该网站变慢,并且我们使用无法100%使用的骇客。这是一篇有关某些选项的好文章,但是我的建议是找到一种使gif正常工作的方法,直到不必支持IE6为止。或者只是给IE6一个降级的体验。
回答
在IE6中使用PNG几乎比其他任何浏览器都困难。我们可以在没有Javascript的CSS中支持所有功能。我之前看到过这种骇客...
div.theImage { background : url(smile.png) top left no-repeat; height : 100px; width : 100px; } * html div.theImage { background : none; progid:DXImageTransform.Microsoft.AlphaImageLoader(src="layout/smile.png", sizingMethod="scale"); }
我不太确定这是否是有效的CSS,但是根据站点的不同,它可能无关紧要。
(值得注意的是,第一张图片的URL基于样式表的目录,第二张图片的URL基于正在查看的页面的目录,因此为什么它们不匹配)
回答
@Hboss
如果我们完全知道要显示的所有文件(以及每个文件的尺寸),那就太好了,但维护该CSS文件是一件很痛苦的事,但是我想这是可能的。当我们出于某些非常常见的目的而开始使用透明PNG时:a)偶然的图形,例如在任何背景上均可工作的图标(可能大小不同),以及b)重复背景;然后你就被搞砸了。我尝试过的每种解决方法都在某个时候碰到了绊脚石(背景透明时无法选择文本,有时图像会以古怪的大小显示,等等),并且我发现为了获得最大的可靠性,我会我将不得不恢复为gif。
我的建议是给PNG透明性一个技巧,但是同时要意识到它绝对不是完美的,并且请记住,对于7岁以上的浏览器用户来说,我们弯腰了。这些天,我的工作是让IE6用户在首次访问该网站时弹出一个窗口,并友好地提醒他们,其浏览器已过时并且不提供现代网站所需的功能,尽管我们会尽力而为。为我们提供最好的服务,如果我们对BLOODY WELL UPGRADED感到满意,那么我们将从我们的网站和整个Internet上获得更好的体验。
回答
- IE PNG Fix 2.0支持" background-position"和" -repeat"!
还存在具有完全Alpha透明度的调色板8位PNG,这与Photoshop和GIMP可能使我们相信的相反,并且它们在IE6中的降级效果更好,只是将透明度降低到1位。使用pngquant从24位PNG生成此类文件。
回答
要考虑的一件事是电子邮件客户端。我们通常希望PNG-24透明,但是在使用IE6的计算机的Outlook 2003中。电子邮件客户端不允许使用CSS或者JS技巧。
这是处理此问题的好方法。
http://commadot.com/png-8-that-acts-like-png-24-without-fireworks/
回答
如果我们从Fireworks中将图像导出为PNG-8,则它们的作用与gif图像相同。因此,它们看上去不会很烂,而透明将是透明的,但它们不会像其他浏览器那样具有完整的24位可爱性。
可能不能完全解决问题,但至少可以将它们重新导出,从而有所作为。