我应该使用PNG透明度还是CSS透明度?
我的第一直觉是使用CSS。但是我听说IE中的过滤器很慢,而且我会用PNG(忽略IE6)获得更好的结果。
但是从个人经验来看,我知道FF3的PNG透明度很慢。
对此有明确的答案吗?
感谢。
答案 0 :(得分:12)
它们是针对两个不同问题的两种不同解决方案。 CSS透明度(我假设您指的是不透明度属性)将使整个元素(其边框,背景和内容)透明,而Alpha PNG透明度仅在您使用图像的情况下有用,例如元素背景
我无法想到很多情况下你可以使用相同的效果。
当然有RGBA colours in CSS3,但浏览器支持目前太低,无法在面向公众的网站/应用程序中成为可行选项。
P.S。我不能说我自己遇到任何FF3 alpha PNG性能问题。
评论后续行动:
行。在那种情况下,我会选择CSS opacity属性。
虽然IE6中的过滤器性能可能不是最佳,但这意味着您不必浪费带宽和图像上的额外HTTP请求。另外,如果你想让图像在IE6中工作,你必须使用AlphaImageLoader,我确信它会比alpha过滤器慢(如果不慢)。
答案 1 :(得分:6)
我刚刚在Mac上的Firefox 3.0.11中进行了一次快速的非科学测试。
我的测试是覆盖div并反复上下滚动。
一个人用过css:
background: #000; opacity:0.8;
另一个使用了相同的10px 24位PNG。
我使用活动监视器测量了以下结果(所以猜测,而不是确切)
Firefox 3.0.11
CSS不透明度:大约60%的CPU使用率。
PNG:大约20%的CPU使用率。
Safari 4.0:
CSS不透明度:大约80%(峰值为120%!)
PNG:约76%(完全没有峰值)
因此,就性能而言,似乎PNG是胜利者。
答案 2 :(得分:4)
我使用pngs和一些jquery来滑动一些文本,脚本很慢!我删除了后台png,脚本很好。
答案 3 :(得分:1)
PNG透明度可以做CSS无法做到的事情 - PNG alpha通道透明度可以为图像的不同部分提供不同程度的部分透明度,而CSS不透明度则无法做到这一点。
答案 4 :(得分:0)
虽然CSS可能是“正确”的方式,但我认为PNG更安全,更容易,更好实现。