我有一个我正在为一个大客户开发的网站,它有一个模糊的城市景观背景图像,然后在背景中有大约 20 个模拟闪烁的灯光元素。虽然我知道褪色的性能可能会突兀,但我认为 19 个元素不会太糟糕。我错了。
就目前而言,每个元素递归地处理它的闪闪发光,如下所示:
function sparkle(flag, time) {
if (flag) {
setTimeout(function () {
self.fadeIn(getRandomInt(250,1000), function () {
sparkle(!flag, getRandomInt(250,1000));
});
}, time);
} else {
setTimeout(function () {
self.fadeOut(getRandomInt(250,1000), function () {
sparkle(!flag, getRandomInt(250,1000));
});
}, time
}
}
当我以不同的速率运行其中的 20 个时,对性能的影响是极端的。问题是这个站点必须下到 IE7(我们有一个自定义的淡入/淡出功能)所以我几乎没有选择。
我的直接答案是我将检查 css 不透明度过渡支持并将淡入和淡出转换为可用的 css 过渡,这在现代浏览器中应该更快(并且让它们在 ie7 中打开/关闭而没有淡入淡出)。我想知道是否有某种方法可以优化原始样式以使其执行得更快。我假设每个元素都进行了过多的运算和回调,以确定随着时间的推移导致性能下降的淡化率。无论如何,是否有一个元素进行褪色,其余元素可以基于它们自己的偏移量(如果这有意义的话)?
提前致谢