jQuery CSS Opacity Animate

时间:2015-08-19 13:49:36

标签: javascript jquery css

因此,我正在尝试制作一个简单的淡入淡出幻灯片,其中包含五张完成后重复的幻灯片。

我觉得我应该得到的应该是有用的,但事实并非如此。

<script type="text/javascript">

    $(document).ready(function() {

        function playslide(){

            setTimeout(function(){
            $("#slide-two").animate({"opacity":"1"}, 2000, 'swing').delay(11000).animate({"opacity":"0"}, 1, 'swing')}, 10000);
            setTimeout(function(){
            $("#slide-three").animate({"opacity":"1"}, 2000, 'swing').delay(11000).animate({"opacity":"0"}, 1, 'swing')}, 20000);
            setTimeout(function(){
            $("#slide-four").animate({"opacity":"1"}, 2000, 'swing').delay(11000).animate({"opacity":"0"}, 1, 'swing')}, 30000);
            setTimeout(function(){
            $("#slide-five").animate({"opacity":"1"}, 2000, 'swing').delay(11000).animate({"opacity":"0"}, 2000, 'swing')}, 40000);

        }

        playslide();

        });
</script>

这个想法是第一张幻灯片的不透明度总是设置为1,这样当最后一张幻灯片淡出时,就好像它再次开始一样。每张幻灯片在淡出前都会保持10秒,每张幻灯片淡入后,上一张幻灯片的不透明度将重新设置为0,以备下次重复使用时。

我希望这不是一个明显的错误。道歉,如果是......

2 个答案:

答案 0 :(得分:2)

请问为什么不使用.fadeIn().fadeOut()

setTimeout(function () {
  $("#slide-two").fadeIn(400, function () {
    setTimeout(function () {
      $("#slide-two").fadeOut(function () {
      $("#slide-three").fadeIn(400, function () {
        // So on...
      });
    }, 1000);
  });
}, 1000);

最好使用这些功能代替手动设置不透明度。

答案 1 :(得分:0)

https://jsfiddle.net/sk8ruo3u/

这是我怎么做的

var list = ['.one','.two','.three','.four'];

$.each(list, function(index, value){
    changeOpacity(value, index*1000);    
});

function changeOpacity(target, timeout) {
    setTimeout(function () {
        $(target).animate({
            opacity: 0.05
        }, 1000);
    }, timeout);
};