我正在構建疊加層(模態或對話框的背景),我希望它在創建元素時淡入。我通過使用CSS3轉換向元素添加/刪除.visible
類來執行動畫。在創建後創建HTML元素和動畫
# SASS styles
.overlay {
background-color: rgba(0, 0, 0, 0.6);
cursor: pointer;
height: 100%;
left: 0;
position: fixed;
pointer-events: none;
top: 0;
width: 100%;
will-change: opacity;
@include transparency(0);
@include transition(opacity 0.3s cubic-bezier(0, 0, 0.3, 1));
&.visible {
pointer-events: auto;
@include transparency(1.0);
}
}
當疊加元素的DOM已經存在,一切都運行得很好:
$(".overlay").addClass("visible") # => does animation as expected...
但是,當我創建的元素,然後嘗試製作動畫,這不:
# JavasScript using jQuery
tag = $("<div class='overlay'></div>")
$("body").append(tag)
tag.addClass("visible")
我知道這是因爲JavaScript正在創建和添加類「即時」,所以我要做的是:
tag = $("<div class='overlay'></div>")
$("body").append(tag)
tag.hide()
tag.show()
tag.addClass("visible")
通過「隱藏」,然後「顯示」該元素,它有足夠的時間讓add類爲該元素設置動畫。
問題 這似乎很哈哈顯示/隱藏一個元素,所以我可以通過CSS過渡動畫。有沒有一個更清晰的方式來實現這個?
如果您執行'tag = $(「
」)'會發生什麼? –試過了......只是顯示,沒有動畫。似乎瀏覽器自動應用'.visible'動畫。 –