No encuentro una forma de usar transiciones css en elementos dom recién creados.transiciones css en elementos nuevos
digamos que tengo un documento html vacío.
<body>
<p><a href="#" onclick="return f();">click</a></p>
</body>
También tengo este css
#id {
-moz-transition-property: opacity;
-moz-transition-duration: 5s;
opacity: 0;
}
#id.class {
opacity: 1;
}
y esto 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;
}
pero, como se puede ver en http://jsfiddle.net/gwxkW/1/ al hacer clic en el elemento aparece instantáneamente.
Si trato de establecer la clase en un timeout()
i menudo encuentro el resultado, pero me parece más una carrera entre javascript y css el motor. ¿Hay algún evento específico para escuchar? Traté de usar document.body.addEventListener('DOMNodeInserted', ...)
pero no está funcionando.
¿Cómo puedo aplicar transiciones CSS a los elementos recién creados?
Configurar el nombre de clase con un trabajo 'setTimeout', pero solo si la demora es de 6ms o más para mí. No estoy seguro de una buena manera. – pimvdb
sí, probé un valor de milisegundos bajo (rango 0-10) y la mayoría de las veces funciona con 5-6 ms, pero * siento * que es el enfoque equivocado. Lo que esperaba es algún tipo de evento relacionado con "a partir de este momento se aplican las CSS", pero no sé si existen –
Ver http: // stackoverflow.com/questions/18564942/clean-way-to-programmatically-use-css-transitions-from-js para la discusión de una manera limpia de hacer esto. – Nickolay