JQuery 淡入问题

标签 jquery fadein

我接到的任务是将 Flash 动画转换为 JQuery。这就是我试图让我的 Jquery 代码执行的操作,这里是 Flash 动画:http://www.thedesigncommonwealth.com/durangoSlideshow.html

这是我的 Jquery 到目前为止的样子:http://www.lisa.netii.net/test-for-durango.html

我首先在左侧工作,只是想让它在移动到另一侧之前正常工作,两侧之间的时间安排非常重要,我认为到目前为止我的代码可能能够处理那。查看 Jquery 版本时有几个明显的问题。首先,我在淡入效果方面遇到了麻烦。即使我使用 .hide 效果,除了第一个图像之外的所有图像都会弹出到屏幕上。我尝试过在每个 div 的每个 Jquery 函数行中使用 .hide ,它似乎只适用于第一个图像,所有其他图像仍然只是弹出到屏幕上。

第一张幻灯片也有问题。目前html中的#slide2应该是slide1,但由于某种原因,动画开始在slide2上运行,而#slide1上没有任何反应,所以我将#slide1更改为#slide2,但这显然不是一个好的解决方案。我可以一次迈出一步......

谁能告诉我如何解决淡入问题? 这是我的 Jquery 代码:

$("#slide1").hide().fadeIn(200).delay(3000).fadeOut(4000);
var t2 = setTimeout(function(){
    $("#slide2").hide().fadeIn(4000).delay(5000).fadeOut(4000);
    var t3 = setTimeout(function(){
        $("#slide3").hide().fadeIn(4000).delay(10000).fadeOut(4000);
        var t4 = setTimeout(function(){
            $("#slide4").hide().fadeIn(4000).delay(5000).fadeOut(4000);
            var t5 = setTimeout(function(){        
                $("#slide5").hide().fadeIn(4000);
            }, 6500);
        }, 11500);
    }, 6500);
}, 6500);

要查看 css 和 html,请参阅 jquery 网站链接。

非常感谢您提前提供的帮助!

最佳答案

试试这个:

var numberOfImages = 5;
var fadeInSpeed = 200;
var fadeOutSpeed = 200;
var pause = 6500;

function startSlideImage(index) {
   jQuery('#slide'+index).hide().fadeIn(200, function(){
      jQuery(this).delay(3000).fadeOut(fadeOutSpeed, function(){
         setTimeout(function(){
            startSlideImage(index+1);
         }, pause);
      });
   });
}

startSlideImage(1);

要添加不同的延迟时间,您可以将此数据写入类属性,例如:

<div id="slide1" class="delay-3000">...</div>

或任何其他未使用的属性和 w3c-konform。但我认为 class-Attribute 是最好的。如果class-Attribute有其他值,可以用空格分割.split(' ')并捕获索引。

之后您可以通过以下方式读出延迟:

var delay = parseInt(jQuery('#slide1').attr('class').replace('delay-',''), 10);

所以你的函数应该是这样的:

function startSlideImage(index) {
   jQuery('#slide'+index).hide().fadeIn(200, function(){
      var delay = parseInt(jQuery('#slide1').attr('class').replace('delay-',''), 10);
      jQuery(this).delay(delay).fadeOut(fadeOutSpeed, function(){
         setTimeout(function(){
            startSlideImage(index+1);
         }, pause);
      });
   });
}

关于JQuery 淡入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5756016/

相关文章:

javascript - 如何淡入 jquery 中背景图像的背景位置更改?

当在带有文本的对象上使用 jQuery fadeIn 时,它在 Safari 中渲染得很糟糕

jquery - CSS 和菜单在 iOS 设备中不起作用 [WordPress]

javascript - 使用自定义滚动条实现数据表固定标题

jquery - 当 HTML 面板到达视口(viewport)顶部后,如何将其固定到页面上?

javascript - Dom 元素变化通知

Jquery addClass fadeIn fadeOut 在 IE8 中不起作用

javascript - 在动画回调完成之前触发一个 jquery 循环进行迭代?

javascript - 使用输入搜索 json

javascript - 使用 fadeIn fadeOut 使用 jquery 显示、隐藏复选框