我正在使用jquery删除一堆div元素。我想要的是当div被移除然后其余的div元素应该动画到顶部。我当前的代码只是删除它,其余的div元素立即移动。我怎样才能做到这一点?
以下是我的代码
HTML
<div class="div"><a href="#" class="remove">Remove</a></div>
<div class="div"><a href="#" class="remove">Remove</a></div>
<div class="div"><a href="#" class="remove">Remove</a></div>
<div class="div"><a href="#" class="remove">Remove</a></div>
JS
$('.remove').on('click', function () {
$(this).parent().remove();
});
CSS
.div {
padding: 20px;
margin-bottom: 20px;
background: #ccc;
-webkit-transition: all 2s; /* For Safari 3.1 to 6.0 */
transition: all 2s;
}
答案 0 :(得分:1)
这将做trik
$('.remove').on('click', function () {
$(this).parent().slideUp("slow", function(){
$(this).remove();
});
});
答案 1 :(得分:1)
以下是您的问题的解决方案:
更新了JS:
$('.remove').on('click', function () {
var $elem = $(this).parent();
$elem.addClass('removing');
setTimeout(function () {
$elem.remove();
}, 500);
});
更新了CSS:
.div {
padding: 20px;
margin-bottom: 20px;
background: #ccc;
transition: width 2s, height 0.5s, opacity 0.5s, margin 0.5s, padding 0.5s;
}
.removing {
height: 0;
opacity: 0;
padding-top: 0;
padding-bottom: 0;
margin-top: 0;
margin-bottom: 0;
}
我包含了边距和填充动画,以防止元素移除时出现任何跳转。同样重要的是要注意我在实际删除元素之前使用setTimeout
等待CSS动画完成。如果您不关心从DOM中删除的元素,并且可以在页面上保持不可见,则可以完全删除该部分。
答案 2 :(得分:0)
您不需要CSS转换来尝试:
$('.remove').on('click', function () {
$(this).parent().hide(300, function(){
$(this).remove();
});
});