2016-05-04 109 views
0

嗨我試圖創建一個動畫,其中一個類只在觸發完成之後才添加。一個接一個地觸發jQuery事件

$('.flipper').click(function(){ 
    $('#first').addClass('first-flip'); 
    $('#second').addClass('second-flip'); 
    $('#fourth').addClass('fourth-flip'); 
}); 

所以

$('#second').addClass('second-flip'); 

只會當

$('#first').addClass('first-flip'); 

已經完成它的過程中觸發。

所以,另一種解釋這種方式是。

塊A具有旋轉效果,在塊A旋轉後,塊B只向右移動20px。

我基本上只想知道如何創建按順序觸發的Jquery效果。

+1

「成品」 是什麼? –

+0

這是一個非常麻煩的做法,你可以只有一個flip類(除非每個類都有自己的自定義行爲),然後使用jquery animate和它的完成塊來觸發下一個動畫,或者使用jquery隊列來排列動作 – Alex

+2

https://api.jquery.com/queue/ – 4334738290

回答

2

您想要連接到transitionendanimationend。以下是使用transitionend的示例。框完成移動後,將添加一個新類,該類將開始下一個轉換以將框轉爲藍色。

var mydiv = document.querySelector("#mydiv"); 
 

 
document.querySelector("button").addEventListener("click", buttonHandler); 
 
mydiv.addEventListener("transitionend", onEndHandler) 
 
    
 
function buttonHandler() { 
 
    mydiv.classList.add("move-left"); 
 
} 
 

 
function onEndHandler() { 
 
    mydiv.classList.add("turn-blue"); 
 
}
#mydiv { 
 
    background: red; 
 
    width: 10em; 
 
    height: 10em; 
 
    transition: 1s; 
 
} 
 

 
#mydiv.move-left { 
 
    transform: translateX(100px); 
 
} 
 

 
#mydiv.turn-blue { 
 
    background: blue; 
 
}
<div id="mydiv"></div> 
 
<button>Move div</button>

如果你需要jQuery的版本,它在這裏:

var mydiv = $("#mydiv"); 

$("button").on("click", buttonHandler); 
mydiv.on("transitionend", onEndHandler) 

function buttonHandler() { 
    mydiv.addClass("move-left"); 
} 

function onEndHandler() { 
    mydiv.addClass("turn-blue"); 
} 

尼斯資源:https://davidwalsh.name/css-animation-callback

+1

這是一場激烈的比賽。 –

相關問題