我找不到在新创建的dom元素上使用css转换的方法。css转换新元素
比方说,我有一个空的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转换?
使用'setTimeout'设置类名称的作用,但只有当我的延迟是6ms或更多。不确定一个好方法。 – pimvdb
是的,我尝试了一些低毫秒值(范围0-10),大部分时间它的工作时间为5-6毫秒,但我感觉这是错误的方法。我希望的是某种事件涉及到“从现在开始应用CSS”,但我不知道它们是否存在 –
请参见http:// stackoverflow。com/questions/18564942/clean-way-to-programmatically-use-css-transitions-from-js讨论一个干净的方式来做到这一点。 – Nickolay