0

请 - 没有 jQuery。

函数 1 使图像出现(CSS3 动画)。

函数 2 然后在这张幻灯片的底部向上滑动一个标题(CSS3 动画)。

函数 3 然后向下滑动标题(CSS3 动画)。

然后需要重复该过程。

我的问题:如何将这些函数放在一个连续循环中,每个函数之间都有延迟。

HTML 代码

<div id="slider">

        <!-- Sildes 
             img_noshow means opacity:0;display:none;
             img_show means opacity:1;
             an_movein means a fade in effect CSS3
        -->
        <img id="img_1" class='img_show' src="/images/c1.jpg" style='width:960px;'/>
        <img id="img_2" class='img_noshow' src="/images/c2.jpg" style='width:960px;'/>
        <img id="img_3" class='img_noshow' src="/images/c3.jpg" style='width:960px;'/>
        <img id="img_4" class='img_noshow' src="/images/c4.jpg" style='width:960px;'/>
        <div id="slider_caption">
        <p id="slider_p1" class="an_slideup"><a href="#one">This is the text going with the slide 1.</a></p>
        <p id="slider_p2" class="img_noshow"><a href="#one">This is the text going with the slide 2.</a></p>
        <p id="slider_p3" class="img_noshow"><a href="#one">This is the text going with the slide 3.</a></p>
        <p id="slider_p4" class="img_noshow"><a href="#one">This is the text going with the slide 4.</a></p>
        </div>
      </div>

JAVASCRIPT代码

slide = 1;//global
function nextMove(){
  slide++;
  if(slide > 4){
    slide = 1;
  }
  //img_noshow means opacity:0;display:none;
  //img_show means opacity:1;
  //an_movein means a fade in effect
  for(i=1;i<5;i++){

    document.getElementById('slider_p'+i).className = 'img_noshow';
    if(i != slide){
      document.getElementById('img_'+i).className = 'img_noshow';
    }
    else{
      document.getElementById('img_'+i).className = 'an_movein';
    }
  }
}


function nextMove2(){
  document.getElementById('slider_p'+slide).className = 'an_slideup';
}

function nextMove3(){
  document.getElementById('slider_p'+slide).className = 'an_slidedown';
}
4

2 回答 2

3

使用setTimeout每个函数末尾的方法在延迟后开始下一个函数:

function nextMove(){
  //...all dat code
  window.setTimeout(nextMove2, 500);
}

function nextMove2(){
  document.getElementById('slider_p'+slide).className = 'an_slideup';
  window.setTimeout(nextMove3, 500);
}

function nextMove3(){
  document.getElementById('slider_p'+slide).className = 'an_slidedown';
  window.setTimeout(nextMove, 500);
}
于 2013-10-22T16:38:09.863 回答
0

最直接的例子:

setInterval(function() {
  nextMove();
  setTimeout(function() {
    nextMove2();
    setTimeout(nextMove3, 5000)
  }, 5000);
}, 15000); 

所以每 15 秒启动一次循环。执行第一个函数,等待 5 秒,执行第二个,等待 5 秒,然后执行第三个(所以在那之后,你再次等待 ~5 秒)。

于 2013-10-22T16:38:54.873 回答