预加载图像,仍然闪烁

时间:2013-12-21 11:33:01

标签: javascript image preloading

我有大约30-40张我正在尝试重新加载的图片。但是,当我将鼠标悬停在图像上时,我仍然会发现这种“闪烁”。图像消失了几毫秒然后又回来了。

        var images = new Array()
        function preload() {
            for (i = 0; i < preload.arguments.length; i++) {
                images[i] = new Image();
                images[i].src = preload.arguments[i];
            }
        }
        preload(
            "/../../regular.png",
            "/../../hover.png"
        );

这是我目前正在使用的功能,上面的代码有问题还是可能是另一个问题?

2 个答案:

答案 0 :(得分:0)

您的函数有错误:您需要直接访问 arguments 对象,而不是函数的属性。试试这样:

        function preload() {
            for (i = 0; i < arguments.length; i++) {
                images[i] = new Image();
                images[i].src = arguments[i];
            }
        }

根据MDN,您当前使用的语法( preload.arguments )已弃用,不适用于所有浏览器。

(如果您检查浏览器的JS控制台,您应该看到报告错误,并且因为循环错误不会运行,因此图像不会预加载。)

答案 1 :(得分:0)

我不确定即使在预加载这样的图像时也可以避免悬停时的闪烁。我猜浏览器仍然需要从磁盘加载它们,这就是导致延迟几毫秒的原因。

更好的方法是使用CSS sprites。例如,参见this page,在 Image Sprites - 悬停效果下,您将找到一个使用精灵来悬停效果的示例。