我的解決辦法: 我改變了display
樣式visibility
風格,因爲這種解決方案適合我的網頁上最好的。通過谷歌搜索「顯示塊覆蓋動畫」可以找到許多其他解決方案。接受的答案是給了我關鍵詞的那個,所以我可以使用Google。CSS透明度忽略過渡時間
原帖:
我做了fadeIn
和fadeOut
功能使用CSS動畫,而不是JQuery的動畫以動畫的不透明度。 點擊圖片應該會彈出淡入,圖片淡出超過300毫秒。 單擊身體的任何位置都會使彈出窗口淡出,圖像在超過300毫秒內褪色。
此刻fadeOut工作,但fadeIn似乎忽略了過渡時間,並立即出現。爲什麼不fadeIn工作?
的JavaScript:
function fadeIn(elem) {
elem.css("display", "block");
elem.css("opacity", 1);
}
function fadeOut(elem) {
elem.css("opacity", 0);
setTimeout(function() {
elem.css("display", "none");
}, 300);
}
$("body").on("click", function(ev) {
if (ev.target != $("#btn")[0] && $("#popup").is(":visible")) {
fadeIn($("#btn"));
fadeOut($("#popup"));
}
});
$("#btn").on("click", function(ev) {
fadeIn($("#popup"));
fadeOut($("#btn"));
});
CSS:
#btn {
position: absolute;
top: 100px;
left: 10px;
transition: 0.3s;
opacity: 1;
}
#popup {
position: absolute;
background-color: black;
display: none;
color: red;
z-index: 1;
padding: 0 1em;
transition: 0.3s;
opacity: 0;
}
你知道爲什麼'display'會這樣影響它嗎? * display:block'設置後,它不應該開始動畫*嗎? – DarkMatterMatt
@DarkMatterMatt「display:block」是如何工作的,所以當你設置elem.css(「display」,「block」);'它只是覆蓋動畫。你可以做的是增加一個超時時間,因爲需要的是強制瀏覽器重繪該區域。這裏是一個更詳細的描述這個帖子:https://stackoverflow.com/questions/8840580/force-dom-redraw-refresh-on-chrome-mac – LGSon
這個JQuery是「有用」嗎?我似乎記得通過JavaScript設置它('elem.style.display =「block」')不這樣做?也許我記錯了。 – DarkMatterMatt