【发布时间】:2011-02-19 04:11:01
【问题描述】:
我正在寻找一个可以帮助我解决以下问题的 jQuery 插件:
我有一个我想用于我的标题的图像列表,但它们非常大(尤其是高度),我不想调整它们的大小以适合我的小标题 div。
我想要的是一个 插件, 允许图像从 div 的底部开始(或者更确切地说是 div 顶部的图像顶部)并向上移动,因此可以看到整个图像,一旦它们完全显示(div 底部的图像底部),它们应该与下一个图像“混合”(不透明度切换或类似的东西),从而创建一个包含所有图像的连续循环。
我浏览了几个插件,但从来没有找到一个可以实现我正在寻找的东西(也许我要求太多了)但是我的 JS 不足以自己构建它.
谢谢!
编辑:根据alexteg的帖子,我决定走另一个方向,即:
$('#header_img img').hide();
$('#header_img img').each(function(i) {
$(this).show().animate({
opacity: 1.0,
marginTop: '-=' + ($(this).height() - $('#header_img').height())
}, 5000, function() {
$(this).animate({
opacity: 0.0
}, 1000).hide();
});
});
现在我遇到的唯一问题是第一个图像触发,一旦完成它就会触发第二个,但它也会立即触发下一个,而不是等待整个动画完成。
现在我知道我可以用动画回调来做到这一点,但我不知道如何将它与我正在做的每一个结合起来循环我的图像。 理想情况下,它还会继续循环(第一张图片在最后一张之后再循环等等),所以如果有人有任何想法,不胜感激!
【问题讨论】:
-
好吧,不幸的是,如果您想自己编写衰落,这并不容易。因为在您的代码中发生的事情是您一次将所有动画分配给所有图像。如果要编写自己的函数,则需要创建一个递归函数,该函数使用动画中当前和/或下一个文件的参数调用,淡出当前图像,同时淡入下一个图像,然后使用 JS setTimeout () 调用与下一个图像相同的函数(如果当前是最后一个图像,则重置为第一个图像)。使用插件更容易,但如果您愿意,我可以在此发布示例
标签: jquery image jquery-plugins jquery-animate slide