【发布时间】:2010-10-07 16:17:05
【问题描述】:
我应该使用 PNG 透明度还是 CSS 透明度?
我的第一反应是使用 CSS。但是我在某处听说 IE 中的过滤器很慢,并且我会使用 PNG 获得更好的结果(忽略 IE6)。
但是根据个人经验,我知道在 FF3 中 PNG 的透明度很慢。
这个问题有明确的答案吗?
谢谢。
【问题讨论】:
-
这个问题真的需要上下文。并提出一个具体问题。
标签: css png transparency
我应该使用 PNG 透明度还是 CSS 透明度?
我的第一反应是使用 CSS。但是我在某处听说 IE 中的过滤器很慢,并且我会使用 PNG 获得更好的结果(忽略 IE6)。
但是根据个人经验,我知道在 FF3 中 PNG 的透明度很慢。
这个问题有明确的答案吗?
谢谢。
【问题讨论】:
标签: css png transparency
它们是针对两个不同问题的两种不同解决方案。 CSS 透明度(我假设您指的是 opacity 属性)将使整个元素(其边框、背景和内容)透明,而 alpha PNG 透明度仅在您使用图像的情况下有用,例如元素背景.
我想不出在很多情况下你可以使用任何一种来达到同样的效果。
当然有RGBA colours in CSS3,但目前浏览器支持太低,无法在面向公众的网站/应用程序中成为可行的选择。
附:我不能说我自己遇到过任何 FF3 alpha PNG 性能问题。
跟进评论:
好的。在这种情况下,我会选择 CSS opacity 属性。
虽然过滤器的性能在 IE6 中可能不是最佳的,但这意味着您不必浪费带宽和对图像进行额外的 HTTP 请求。另外,如果你想让图像在 IE6 中也能工作,你必须使用 AlphaImageLoader,我敢肯定它会比 alpha 过滤器慢(如果不慢的话)。
【讨论】:
我刚刚在 Mac 上的 Firefox 3.0.11 中做了一个非科学的快速测试。
我的测试是覆盖一个 div 并反复上下滚动。
一个用过的css:
background: #000; opacity:0.8;
另一个使用相同的 10px 24 位 PNG。
我用活动监视器测量了以下结果(所以猜测,不准确)
火狐3.0.11
CSS 不透明度:大约 60% 的 CPU 使用率。
PNG:大约 20% 的 CPU 使用率。
Safari 4.0:
CSS 不透明度:大约 80%(峰值为 120%!)
PNG:大约 76%(完全没有峰值)
就性能而言,PNG 似乎是赢家。
【讨论】:
So as far as performance goes, it seems like a PNG is the winner. 至少在 Mac 上。你在 Windows 上测试过吗?
使用 png 24 位时,IE 中存在内存泄漏(包括 8 个)!请注意。
我使用带有一些 jquery 的 pngs 来滑动一些文本,脚本非常慢!我删除了背景 png,脚本很好。
【讨论】:
PNG 透明度可以做 CSS 不能做的事情 -- PNG alpha 通道透明度可以对图像的不同部分具有不同程度的部分透明度,而 CSS 不透明度则不能。
【讨论】:
-webkit-mask 一起使用)
虽然 CSS 可能是“正确”的方式,但我认为 PNG 更安全、更容易且实现更好。
【讨论】: