jQuery 应用过滤器或排序元素的动画

jQuery Animation on applying filters or sort elements

我想问问有没有人知道如何在排序 div 元素或应用过滤器时创建像这个插件 shufflejs 这样的动画。

有什么帮助吗?

谢谢:)

这是使用 JQuery 函数动画的简单示例:

$(document).ready(function(){
  
   
   var asc =false;
   $("#sort").change(function(){
    if(asc){
       asc=false;
       todesc();  
    }
     else{
       asc=true;
       toasc();
    }
     
   });
  
  
});





function toasc(){
  var count_size = $('.col').size();
  // showing
     var cnt=1;
     var top_=0;
     var left_=0;
     for(var i=0;i<count_size;i++){
     for(var j=0;j<count_size;j++){
       var val = $('.col').eq(j).attr('value');
       if(cnt==val){
         if(cnt%2==0){
           $('.col').eq(j).animate({left:left_+'px',top:top_+'px'},2000);
           left_=0;
           top_+=100;
         }
         else{
           $('.col').eq(j).animate({left:left_+'px',top:top_+'px'},2000);
           
           left_=100;
         }
         cnt++;
       }
     }
     }
    }
  
  function todesc(){
    var count_size = $('.col').size();
  // showing
     var cnt=6;
     var top_=0;
     var left_=0;
     for(var i=0;i<count_size;i++){
     for(var j=(count_size-1);j>=0;j--){
       var val = $('.col').eq(j).attr('value');
       if(cnt==val){
         if(cnt%2==0){
           $('.col').eq(j).animate({left:left_+'px',top:top_+'px'},2000);
           left_=100;
           
         }
         else{
           $('.col').eq(j).animate({left:left_+'px',top:top_+'px'},2000);
           top_+=100;
           left_=0;
         }
         cnt--;
       }
     }
     }
    }
.row{
  width:220px;
  height:320px;
  position:relative;
}
.col{
  width:100px;
  height:100px;
  border:1px solid #323232;
  position:absolute;
 }

#sort{
  float:left;
  width:200px;
}

#col1{
  top:0; 
}
#col2{
  top:0; 
  left:100px;
}


#col3{
  top:100px;  
}
#col4{
  top:100px;  
  left:100px;
}

#col5{
  top:200px;  
}
#col6{
  top:200px;  
  left:100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="row" class="row">
    <div id="col1" class="col" value="3">C</div>
    <div id="col2" class="col" value="6">F</div>

    <div id="col3" class="col" value="4">D</div>
    <div id="col4" class="col" value="2">B</div>

    <div id="col5" class="col" value="1">A</div>
    <div id="col6" class="col" value="5">E</div>
</div>

<select name="sort" id="sort">
  <option value="1">DESC</option>
  <option value="2">ASC</option>
</select>