【发布时间】:2016-06-08 19:17:44
【问题描述】:
我正在尝试在我的项目中使用 CSS 动画。
一切正常。但是,当我运行我的代码时,CSS 动画会同时应用于类 .allPro 的所有元素。
有没有办法单独应用 CSS 动画?
例如,让第一个元素出现,然后是第二个,然后是第三个,以此类推?
这是我在FIDDLE上的代码
这是我的 CSS 代码:
.allPro {
width:150px;
height:150px;
float:left;
margin:5px;
background-color:#000;
animation: fadein 2s;
}
@keyframes fadein {
from { opacity: 0}
to { opacity: 1}
}
元素是动态创建的。所以我无法预测页面上有多少元素。
我愿意使用 jQuery 来实现我想要做的事情。
编辑:
这就是我如何在页面上动态创建元素并将它们附加到容器中:
$(document).ready(function() {
var poutput = $('.dotted-list');
$.ajax({
url: 'https://mydonain.com/page.php',
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 5000,
success: function(data, status) {
$.each(data, function(pi, item) {
str = item.name;
if (str.length > 2) str = str.substring(0, 2)
var products = '<a class="allPro" data-id="' + item.id + '" data-name="' + item.name + '" data-type="' + item.type + '" href="" data-transition="slidefade">' + '<div class="products-feed-Small">' + '<div style="position:absolute; top:40%; text-align:center; width:100%; color:#fff; font-family:Walpurga; font-size:28px; font-weight:bold; text-decoration: none;">' + item.name + '</div>'
+'<img src="62.jpg" >' + '</div>' + '</a>';
poutput.append(products);
$('.allPro').each(function() {
var delay = $(this).index();
$(this).css('animation-delay', delay + 's');
});
//$( "#load-more" ).show();
});
},
error: function() {
poutput.text('There was an error loading the data.');
}
});
});
【问题讨论】:
-
好的,如果元素是动态的,那么您需要使用 JavaScript。 CSS 对此无能为力。如果你可以使用JS/jQuery,我可以给出解决方案。
-
那么没有办法使用 CSS 做到这一点?
-
不,因为唯一的 CSS 方法是添加
animation-delay并且当你有动态编号时。元素,你不能为每个元素编写选择器。 -
@Harry,您介意分享您的 jQuery 解决方案吗?
-
如果您愿意考虑使用 jQuery 或纯 JavaScript 版本,请将这些标签添加到您的问题中(使用 edit 链接)。
标签: javascript jquery html css css-animations