Javascript Jcarousle-在设置动画之前加载图像,以防止出现白色空白方块
我和jCarousel在一家画廊工作。 我创建了一个脚本,每次单击数组中的“下一步”按钮时,都会将下一个图像加载到库中。每次单击“下一步”,都会加载接下来的五幅图像。这一切都非常好,但我的问题是,在加载图像之前,我看到了空的Javascript Jcarousle-在设置动画之前加载图像,以防止出现白色空白方块,javascript,jquery,jcarousel,Javascript,Jquery,Jcarousel,我和jCarousel在一家画廊工作。 我创建了一个脚本,每次单击数组中的“下一步”按钮时,都会将下一个图像加载到库中。每次单击“下一步”,都会加载接下来的五幅图像。这一切都非常好,但我的问题是,在加载图像之前,我看到了空的,因此动画持续时间的一半,我只看到空方块移动。 我尝试了两种解决方案: 1) 为动画添加延迟-将项添加到旋转木马后,添加一两秒钟的等待-这对我不起作用,因为动画的一部分似乎是将新添加的图像变为可见,因此如果我添加延迟动画功能,它会做完全相同的事情(暂时显示空方块) 有趣的是,
itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
我知道这可能是不够的输入和代码,但脚本变得非常长,所以如果某个特定部分(或全部?)可用,请告诉我…我不想让消息变得杂乱无章:)
感谢您阅读此文,
Yan试试这个
干杯。我通过以下方式实现了这一点:
- 在组装新的carousel li节点时,我添加了image元素,但没有设置src属性
- 将节点添加到旋转木马后,我将一个方法绑定到图像的加载事件。加载事件会增加已加载图像的计数。一旦计数与转盘大小相同,我就知道所有图像都已加载,我可以开始动画
addItems()
的数据是json对象数组,每个对象都包含一个ImageUrl属性。Ok,尝试将$.load(img)添加到将图像添加到旋转木马的循环中,但没有成功。我真的以为可以:)
var imageLoadCount = 0;
var jcarousel = $("#myCarousel").data("jcarousel");
var imageLoaded = function() {
imageLoadCount++;
if(imageLoadCount === jcarousel.options.size) {
// all the images have loaded.. begin the scroll
jcarousel.options.auto = 5; // scroll every 5 seconds
jcarousel.startAuto();
}
};
var addItems = function(data) {
jcarousel.size(data.length);
$.each(data, function(index) {
jcarousel.add(index + 1, getItemAsHtml(this)); // helper function to create node
});
$("img", carouselID).bind("load", imageLoaded);
$("img", carouselID).each(function(index) {
this.src = data[index].ImageUrl; // this triggers the image loaded event
});
};