У меня есть элемент на моей HTML-странице, который я хочу предоставить динамический контент, и я хочу, чтобы вставленный HTML переходил с 0% на 100% непрозрачность.
<div id="content"></div>
#content {
opacity: 1;
transition: opacity .5s ease-out;
-moz-transition: opacity .5s ease-out;
-webkit-transition: opacity .5s ease-out;
}
#content.hide {
opacity: 0;
}
function setContent(html) {
var content = document.getElementById("content");
//Set hide class
content.className += " hide";
//Set HTML
content.innerHTML = html;
//Unset hide class
content.className = content.className.replace(/(?:^|\s)hide(?!\S)/g, '');
}
Обратите внимание, что setContent()
устанавливает, а затем отключает класс hide
. Однако кажется, что браузер (по крайней мере, Chrome) не делает недействительным элемент контента до тех пор, пока он не вернется из функции, поэтому элемент не получит шансов на транзистор. Как я могу убедиться, что анимация играет?
EDIT: чтобы быть ясным, setContent()
вызывается после загрузки DOM. Представьте приложение, которое очищает и повторно заполняет экран при возникновении какого-либо действия.
Как насчет использования анимаций?
#content {
padding-left: 32px;
padding-right: 32px;
animation: fadein 0.5s;
-moz-animation: fadein 0.5s;
-webkit-animation: fadein 0.5s;
}
@keyframes fadein {
from {
opacity:0;
}
to {
opacity:1;
}
}
@-moz-keyframes fadein {
from {
opacity:0;
}
to {
opacity:1;
}
}
@-webkit-keyframes fadein {
from {
opacity:0;
}
to {
opacity:1;
}
}
Можете ли вы быть более ясными, каков контекст этого?
Также, где вы вызываете функцию? Это место, где вы вызываете функцию внутри функции DOM ready?
В jQuery это будет примерно так:
$(document).ready(function(){
//call the function inside here.
});
DOM ready
?setContent
является глобальной функцией.