据我所知,此问题仅适用于Firefox。 (我在Win7 Ultimate上使用FF 4.0.1。)
我有一个页面,我需要显示一个随机的背景图像。我用一个小的PHP脚本(rotate.php)来做这个伎俩。所以我的css基本上是:
#main {background-image: url(bg/rotate.php);}
(我之所以提到这是因为我的猜测是因为图像 name 不会改变,但是图像的内容确实会让Firefox感到有些困惑。 )
最重要的是,我有一个小动画(用javascript制作),其中一个小点从页面顶部落下。动画元素(包含此点)通过#main元素(及其随机背景图像)。
问题是Firefox在刷新页面时没有正确更新背景图像。
似乎Firefox实际上首先显示来自上一页页面加载的背景图像,并且只有当动画在此图像上运行时,Firefox才真正更新图像,但它只会更新部分由动画元素覆盖。因此结果是两个图像的混合(上一页加载,当前页面加载)。
只有在调整窗口大小时(例如通过打开/关闭Firebug),Firefox才会完全重绘图像(最后全部显示新图像)。
您可以在此处看到问题:http://www.terpsycordes.com/en/home(您可能需要多次重新加载以连续获取两个不同的图像并查看问题,并且您必须等待几秒钟才能将动画设置为开始。)(再一次,这似乎只是Firefox。)
你有没有想过要避免这种难看的效果?是否有任何技巧迫使Firefox重绘图像?
提前致谢。
修改:
感谢DavidJCobb提供的链接,我尝试了各种javascript技巧来强制Firefox重新绘制背景图像。结果仍然不完全令人满意,但它比以前更好。这是我在测试期间发现的(希望这可以帮助某人):
所以我在更新之前的短暂时间内仍然会看到上一张图片。如果有人提示如何改进这一点,我很高兴听到它。
答案 0 :(得分:2)
但它只更新动画元素所涵盖的部分
我猜你在Firefox中遇到过某种奇怪的重绘错误。强制Firefox重新绘制布局可能会有所帮助。通过改变DOM来Here's a method for forcing a redraw。