我们(心爱的)设计师不断制作具有透明背景的PNG文件,用于我们的应用程序中。我想确保这个PNG的特性在“旧”的浏览器中也能正常使用。最好的解决方案是什么?
以下是编辑内容
@mabwi & @syd - 我是否同意使用PNG并不重要。这是一个我需要解决的问题!
@Tim Sullivan - IE7.js看起来很酷,但我不想引入应用程序的所有其他更改。我希望有一种专门解决PNG问题的解决方案。谢谢提供链接。
我们(心爱的)设计师不断制作具有透明背景的PNG文件,用于我们的应用程序中。我想确保这个PNG的特性在“旧”的浏览器中也能正常使用。最好的解决方案是什么?
以下是编辑内容
@mabwi & @syd - 我是否同意使用PNG并不重要。这是一个我需要解决的问题!
@Tim Sullivan - IE7.js看起来很酷,但我不想引入应用程序的所有其他更改。我希望有一种专门解决PNG问题的解决方案。谢谢提供链接。
background-position
和-repeat
!此外,带有完全透明度的调色板8位PNG文件存在,与Photoshop和GIMP让你相信的相反,它们在IE6中降级效果更好 - 它只将透明度减少到1位。使用pngquant从24位PNG生成这样的文件。
我在这里找到了一个看起来非常好的解决方案:Unit Interactive -> Labs -> Unit PNG Fix
更新:Unit PNG 还被列入NETTUTS上PNG修复选项列表
以下是他们网站上的亮点:
在IE6中使用PNG与其他浏览器并没有太大的区别。您可以在CSS中支持所有的内容,而无需使用Javascript。我以前就看过这个技巧...
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文件可能会非常麻烦,但我认为这是可能的。当您想开始使用透明PNGs进行某些非常常见的用途时:a)次要图像(例如不同大小的图标),可以在任何背景下使用,和b)重复的背景;那么您就完了。我尝试过的每个解决方法在某些时候都遇到了障碍(当背景透明时无法选择文本,有时 显示的图像大小很奇怪等等),我发现为了最大可靠性,我必须恢复到GIF。
我的建议是尝试使用PNG透明度技巧,但同时意识到它肯定不完美-请记住,您为7岁以上的浏览器用户费心。我现在的做法是在IE6用户首次访问网站时弹出窗口,友善地提醒他们,他们的浏览器已过时,无法提供现代网站所需的功能,虽然我们会尽力为您提供最好的体验,但如果您升级最新版本的浏览器,您将获得更好的体验。
IE7.js将为IE6提供PNG支持(包括透明度)。
我曾尝试使用.png文件创建网站,但是这并不值得。网站变得缓慢,并且你使用的hack并不能百分之百地有效。这里有一篇关于一些选择的好文章,但我的建议是找到一种方法使gif文件可用,直到您不再需要支持IE6。或者只为IE6提供降级体验。
我相信所有的浏览器都支持PNG-8。虽然它不是alpha混合,但它确实具有透明背景。