鼠标悬停图像滞后

Kie*_*fer 2 javascript image mouseover delay lag

在我目前正在构建的网站上,我有 5 个外部链接,通过鼠标悬停,链接到 facebook、twitter、youtube 等社交网站。这些链接有一个白色社交网络徽标的小图像 (15 像素 x 15 像素),然后用白色文字写出名字。我正在使用 javascript 将 img src 更改为徽标的彩色版本,并将文本的颜色更改为浅蓝色。文字颜色立即改变,但图像有轻微的滞后,尤其是 Facebook 徽标。

我的鼠标悬停 JavaScript 代码是:

function FacebookMO(Type) {
    if (Type == "Off") document.getElementById('Facebook').style.color = "#FFF", document.getElementById("FacebookLogo").src = "Images/Social/Facebook Logo W.png";
    if (Type == "Over") document.getElementById('Facebook').style.color = "#3B5998", document.getElementById("FacebookLogo").src = "Images/Social/Facebook Logo B.png";
    if (Type == "Clicked") document.getElementById('Facebook').style.color = "#141e33"; }
Run Code Online (Sandbox Code Playgroud)

其他 4 个链接的代码是相同的,除了 facebook 的相关链接/文本/img 已更改。这是 html 的所有相关代码;

<a href="http://www.facebook.com/WrecRecords" class="bar3" id="Facebook"
onmouseout="FacebookMO('Off')" onmouseover="FacebookMO('Over')" onmousedown="FacebookMO('Clicked')"
onmouseup="FacebookMO('Over')" style="padding-left:10px;"><img class="padr5" id="FacebookLogo"
src="Images/Social/Facebook Logo W.png" style="height:15px; width:15px;"/>Facebook</a>
Run Code Online (Sandbox Code Playgroud)

还有CSS;

a.bar3 {
    font-family:"Bebas Neue", sans-serif;
    font-size:20px;
    color:#FFF;
    padding:0px 20px;
    text-decoration:none;
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过不同的方法预加载图像,包括visibility:hidden; 显示:无;并将图像作为底部的 1x1px img 加载到网页中,但我仍然有延迟。

在线延迟比仅在本地使用整个网站时要严重得多。如果有人可以提供任何帮助,我将非常感激,因为我真的很困惑如何防止这种滞后的发生。谢谢。

编辑:刚刚在几个不同的浏览器上测试了这一点。在 Firefox 上,我没有任何延迟,并且从本地文件测试时它工作完美。耶!:) 但是在网络上,当您第一次将鼠标悬停在其上时,会有大约 3 秒的轻微延迟,然后就可以正常工作了。(我想我只需要在页面加载时立即加载图像)。Chrome,这是我最初测试的,仍然有这个轻微的滞后问题,尽管我完全不知道为什么。我尝试在 Internet Explorer 上进行测试,但 atm 上根本没有运行任何脚本。

Bas*_*ijk 5

这个技巧的技巧不是使用单独的图像,而是使用所谓的spritemap. 您的图像为 15x15px,现在您制作一个 30x15px 图像,其中包含彼此相邻的正常状态和悬停状态。background-position您可以更改背景图像,而不是替换图像。

来自http://css-tricks.com/snippets/css/basic-link-rollover-as-css-sprite/的示例

a {
       display: block;
       background: url(sprite.png) no-repeat;
       height: 30px;
       width: 250px;
}

a:hover {
       background-position: 0 -30px;
}
Run Code Online (Sandbox Code Playgroud)