yar*_*rek 3 javascript css jquery css3
这是我的片段:
.item {
display:inline-block;
width:120px;
height:120px;
border:1px solid red;
}Run Code Online (Sandbox Code Playgroud)
<div id="listing">
<div data-value="5" class="item">item 5</div>
<div data-value="3" class="item">item 3</div>
<div data-value="2" class="item">item 2</div>
<div data-value="1" class="item">item 1</div>
<div data-value="4" class="item">item 4</div>
</div>Run Code Online (Sandbox Code Playgroud)
我想div根据data-value属性的值对s 进行排序,但我想显示使用动画重新排列的项目.我怎样才能做到这一点?
以下是如何为排序设置动画:
function animateSort(parent, child, sortAttribute) {
var promises = [];
var positions = [];
var originals = $(parent).find(child);
var sorted = originals.toArray().sort(function(a, b) {
return $(a).attr(sortAttribute) > $(b).attr(sortAttribute);
});
originals.each(function() {
//store original positions
positions.push($(this).position());
}).each(function(originalIndex) {
//change items to absolute position
var $this = $(this);
var newIndex = sorted.indexOf(this);
sorted[newIndex] = $this.clone(); //copy the original item before messing with its positioning
$this.css("position", "absolute").css("top", positions[originalIndex].top + "px").css("left", positions[originalIndex].left + "px");
//animate to the new position
var promise = $this.animate({
top: positions[newIndex].top + "px",
left: positions[newIndex].left + "px"
}, 1000);
promises.push(promise);
});
//instead of leaving the items out-of-order and positioned, replace them in sorted order
$.when.apply($, promises).done(function() {
originals.each(function(index) {
$(this).replaceWith(sorted[index]);
});
});
}
$(function() {
$("input").click(function() {
animateSort("#listing", "div", "data-value");
});
});Run Code Online (Sandbox Code Playgroud)
.item {
display: inline-block;
width: 120px;
height: 120px;
border: 1px solid red;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="button" value="Sort" />
<div id="listing">
<div data-value="5" class="item">item 5</div>
<div data-value="3" class="item">item 3</div>
<div data-value="2" class="item">item 2</div>
<div data-value="1" class="item">item 1</div>
<div data-value="4" class="item">item 4</div>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |