用漂亮的动画删除div

Mat*_*ron 2 javascript css jquery

我想删除div一个伟大的动画,但我不知道如何做到这一点.

所以我以小提琴为例:

HTML

<h2>What I have</h2>
<div class='test'>1</div>
<div class='test'>2</div>
<div class='test'>3</div>
<div class='test'>4</div>
<div class='test'>5</div>

<h2>What I Want</h2>
<div class='test2'>1</div>
<div class='test2'>2</div>
<div class='test2'>3</div>
<div class='test2'>4</div>
<div class='test2'>5</div>
Run Code Online (Sandbox Code Playgroud)

CSS

div.test, div.test2 {
    display:inline-block;
    padding: 20px;
    margin:5px;

    border:1px solid black;

    -webkit-transition: all .5s;
    -moz-transition: all .5s;
    -ms-transition: all .5s;
    -o-transition: all .5s;
    transition: all .5s;
}
Run Code Online (Sandbox Code Playgroud)

JS

$('div.test').on('click', function() {
   $(this).remove();
});

$('div.test2').on('click', function() {
    // I don't want to change opacity or padding...
    // I just want to remove with animation like this:
    $(this).css('width','0px').css('padding','0px');
    $(this).css('opacity',0);
});
Run Code Online (Sandbox Code Playgroud)

在这里看到一个很好的例子

但是当一个div被移除时,她被剪掉了,它们只是下一个div的动画.

任何的想法 ?

编辑

终于解决了:Jsfiddle

Jul*_*ire 8

既然你删除了element它,它就不能animated了.您可以通过类动画并transitionend删除元素.像这样例如:

.animate
{
    height: 0px;//or anything you need
    transition: height 1s;
}



$('#delete').click(function (e) {
        //instead of remove you add a class.
        $(".notification:first-child").addClass('animate');
    });
$('.notification').on('transitionend', function(e){
    //when transition is finished you remove the element.
    $(e.target).remove()
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/nawkufh1/


Mat*_*ron 7

我已经用animation JsFiddle解决了我的问题

感谢你的帮助。


Pat*_*607 5

你可以这样做:

$('#delete').click(function (e) {
  $(".notification:first-child").slideUp(function() {
    $(this).remove();
  });
});

$('#add').click(function (e) {
  $(".notifications").append("<div class='notification'></div>");
});
Run Code Online (Sandbox Code Playgroud)
.notifications {
    left: 0px;
    top: 0px;
    width: 400px;
    height: 300px;
    position: relative;
    border: solid 1px green;
}

.notification {
    height: 40px;
    background: lightblue;
    margin: 2px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<button type="button" id="delete">delete</button>
<button type="button" id="add">add</button>
<div class="notifications">
  <div class="notification"></div>
  <div class="notification"></div>
  <div class="notification"></div>
  <div class="notification"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

它使用 jQuery 而不是 CSS 来制作动画。单击删除按钮时,顶部栏会向上滑动,然后被删除。