2016-11-13 165 views
0

我目前正在編程一個名爲quickly.js的庫。有conceal(milliseconds)display()功能,其中有動畫,通過CSS編程。隱藏功能動畫工作正常,但顯示功能動畫無法正常工作。它不會淡入,而是突然出現。這是一個展示bug的JSFiddle:https://jsfiddle.net/v6esmqtf/6/JavaScript + CSS3動畫無法正常工作?

+0

你是什麼意思的「不正常工作」?請具體說明你想要做什麼。 – discipline

+0

@discipline更新問題 – Bennett

+0

您沒有設置顯示功能 - jsfiddle.net/ypz7m241/ – discipline

回答

1

你根本沒有display功能設置。

Element.prototype.conceal = function(ms) { 
    ms = ms || 0; 
    var thisStyle = this.style; 
    thisStyle.opacity = 0; 
    setTimeout(function() { 
    thisStyle.display = "none"; 
    }, ms); 
}; 

Element.prototype.display = function(ms) { 
    ms = ms || 0; 
    var thisStyle = this.style; 
    thisStyle.display = ""; 
    setTimeout(function() { 
    thisStyle.opacity = 1; 
    }, ms); 
}; 

然後......

document.getElementById("conceal").onclick = function() { 
    document.getElementById("get").conceal(800); 
}; 

document.getElementById("display").onclick = function() { 
    document.getElementById("get").display(0); 
}; 

希望這有助於。

+0

奇怪的是setTimeout()需要在那裏,即使沒有延遲。我改變了代碼在'display()'函數中沒有參數。相反,我用零延遲運行setTimeout()。 – Bennett

+0

我想*這是因爲'不透明度'有一個內置的關鍵幀時間 - 您可以使用JQ代替'$(「#get」)。animate({opacity:'1'},5000);' - http:// stackoverflow.com/questions/23180504/css-opacity-change-on-div-with-time-delay-not-user-interaction – discipline