添加类时使用.each添加延迟

时间:2014-06-03 02:52:22

标签: jquery html css css-animations

我试图创建一个简单的动画,其中每个字母将逐个缩放。在每个div中添加一个类时,是否可能有1秒的延迟?以下是我目前所做的工作: JSFiddle

HTML

<div class="animation">
    <div>a</div>
    <div>n</div>
    <div>i</div>
    <div>m</div>
    <div>a</div>
    <div>t</div>
    <div>e</div>
</div>

CSS

.animate_letters{
    float:left; 
    text-transform:uppercase; 
    font-size:80px; 
    display:inline; 
    margin-right:5px;
    animation:fancytext 1s cubic-bezier(0.3, 2, 0.35, 1.45) 0s normal none 1;

}

@keyframes fancytext{
  from {
    transform: scale(0) translateX(-40%); opacity:0;
  }

  to {
    transform: scale(1) translateX(0%); opacity:1;
  }

}

JAVASCRIPT

$(document).ready(function(){
    $.each( $('.animation'), function(i, animation){
        $('div', animation).each(function(){
        $(this).addClass('animate_letters')
        })
    })
})

2 个答案:

答案 0 :(得分:2)

您可以使用setTimeout()

$(document).ready(function(){
$.each( $('.animation'), function(i, animation){
  $('div', animation).each(function(ii){
  var data = $(this);
  setTimeout( function () {
    $(data).addClass('animate_letters')
 }, ii * 1000);
})})});

<强> Demo

更新:您也不需要两个.each()。您可以使用选择器.each()将其缩小到一个$('.animation div')

$(document).ready(function(){
 $('.animation div').each(function(ii){
 var data = $(this);
 setTimeout( function () {
  $(data).addClass('animate_letters')
 }, ii * 1000);
})});

<强> Simplified Demo

答案 1 :(得分:1)

扩展Milind Anantwar的答案,你需要使用setTimeout,但是给每个字母一个不同的超时:

$(document).ready(function(){
    $('.animation').each(function(i, animation){
        $('div', animation).each(function(j, div){
            setTimeout(function() {
                $(div).addClass('animate_letters');
            }, 1000*j);
        });
    });
});