在新图像完全加载时添加微调器

时间:2014-01-21 12:29:55

标签: javascript image spinner loading gif

脚本的作用是使用newimage.gif更改image.jpg,反之亦然 现在我想在newimage.gif加载时添加一个微调器 像9gag.com/gif上的东西。
有人可以帮帮我吗?

这是代码: HTML

<img src="/image.jpg" id="pic" onclick="change()"/>
<a id="first" href="/newimage.gif" style="display:none;"></a>
<a id="second" href="/image.jpg" style="display:none;"></a>

的javascript

function change(){
var imag = document.getElementById('pic').src;
var img = imag.slice(-3);
var img1 = document.getElementById('second').href;
var imag2 = document.getElementById('first').href;

if(img == 'gif') {
document.getElementById('pic').src=imag2;
//    here the newimage.gif changes to image.jpg 
} else {
//    here the image.jpg changes to newimage.gif
//    i think here should be the code that will display a spinner while the image.gif loads completely
document.getElementById('pic').src=img1;
}
}

4 个答案:

答案 0 :(得分:9)

最简单的方法可能是将图像的CSS background-image属性设置为加载微调器图形。

HTML:

<img src="path/to/real/image.jpg" class="loading">

CSS:

img.loading {
    background: transparent url(path/to/loading.gif) no-repeat scroll center center;
}

下载实际图像后,它会覆盖“加载”动画GIF背景图像。

如果您使用渐进式显示器保存了GIF或JPG,您将需要重新保存这些图像而不使用该选项,因此在下载完整图像之前,真实图像是不可见的,从而允许您的微调器图形在此期间显示。

答案 1 :(得分:0)

看看这个:http://www.appelsiini.net/projects/lazyload。 视频外部的图像在用户滚动到它们之前不会加载,并且您可以轻松拥有一个小图像占位符,直到它被加载...

我之前在测试网站上实际使用过它:http://dev.thomaskile.me/?page=test-zone&module=Masonry

答案 2 :(得分:0)

我找到了一种方法,唯一的问题是在image.gif加载后,仍然会出现微调器。

if(img == 'gif') {
document.getElementById('pic').src=imag2;
//    here the newimage.gif changes back to image.jpg 
document.getElementById("spinner").style.display = "none";    
} else {
document.getElementById('pic').src=img1;

var image = new Image();
image.src = document.getElementById('second').href;

var x = image.complete;
if(x) {
document.getElementById("spinner").style.display = "none"; 
} else {
document.getElementById("spinner").style.display = "block";
}
}
}

这是我使用脚本http://www.2lol.ro/load/poze_haioase_miscatoare/20?ref=stk

答案 3 :(得分:0)

您是否签出了this site可配置的微调器,而没有可附加到任何dom元素的附加图形?启动/停止微调器可以归结为2个js函数调用。

代码来自mit许可证,缩小的js独立文件需要9kb,胶水代码用作jquery插件,并且有一个vml后备,错误...蒸汽朋克浏览器; - )。

我与代码或作者没有任何关系。