Я не могу найти способ использовать CSS-переходы на вновь созданных элементах DOM.
скажем, у меня есть пустой HTML-документ.
<body>
<p><a href="#" onclick="return f();">click</a></p>
</body>
У меня также есть этот CSS
#id {
-moz-transition-property: opacity;
-moz-transition-duration: 5s;
opacity: 0;
}
#id.class {
opacity: 1;
}
и это JS
function f() {
var a = document.createElement('a');
a.id = 'id';
a.text = ' fading in?';
document.getElementsByTagName('p')[0].appendChild(a);
// at this point I expect the span element to be with opacity=0
a.className = 'class';
// now I expect the css transition to go and "fade in" the a
return false;
}
но, как вы можете видеть на http://jsfiddle.net/gwxkW/1/, при нажатии элемент появляется мгновенно.
Если я пытаюсь установить класс в timeout()
, я часто нахожу результат, но мне кажется, что это скорее гонка между javascript и движком css. Есть ли какое-то конкретное событие для прослушивания? Я пытался использовать document.body.addEventListener('DOMNodeInserted', ...)
, но он не работал.
Как я могу применить CSS переходы на вновь созданные элементы?