【发布时间】:2014-01-06 05:50:19
【问题描述】:
我有一个非常奇怪的问题。我在 jQuery 中从 JSON 加载文章,当它们加载时,我想为每个动态元素添加一个“动画”类。
$.each(jsonArticles, function (i, article) {
var $articleHTML = $(
'<article class="article">' +
'<a href="' + jsonObject.filmLink + article.reviewLink + '"><img src="' + jsonObject.imagePath + article.reviewImage + '" alt=""></a>' +
'<h1><a href="' + jsonObject.filmLink + article.reviewLink + '">' + article.reviewTitle + '</a></h1>' +
'<p><a href="' + jsonObject.filmLink + article.reviewLink + '">' + article.reviewSummary + '</a></p>' +
'</article>');
$articles
.append($articleHTML)
.find("article")
.addClass("animate");
});
所有这一切都很好,并且在 Firebug 中检查显示该类已成功添加到每个文章标签。
但是,当尝试在文章上为添加的类使用 CSS 过渡时,它不会动画,而是直接跳到最终样式(不透明度:1)。
.article {
opacity: 0;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.article.animate {
opacity: 1;
}
动画没有发生,但是添加了类并且文章成功设置为不透明度:1.它立即显示。
有人对此有任何想法吗?我根本想不通。
另外一点,这很有趣...如果我将 .animate 类更改为 :hover,那么文章将不会显示,直到我悬停并且动画 确实工作。为什么它适用于悬停而不是立即添加,这对我来说似乎很奇怪。
.article.animate:hover {
opacity: 1;
}
如有任何意见,我将不胜感激。
谢谢, 米奇。
现场演示: http://jsfiddle.net/Pz5CD/ 注意文章是如何以 100% 的不透明度弹出的。看不到动画。
【问题讨论】:
-
.delay()仅适用于 jQuery 动画,因此不会影响添加类。 -
是的,我的错。我已将其删除。问题仍然存在。
标签: javascript jquery css css-animations