隐藏元素后,如何使用css3过渡动画元素

使用jQuery的.fadeOut()隐藏一些元素后,是否可以使用css3过渡动画元素移动?

我在这里找到了一些解决方案(参见“它也适用于网格”部分):

不过我的情况更像是这样: http : //jsfiddle.net/CUzNx/5/

 
Test1
Test2
Test3
Test4
Test5
Test6
Test7

我有浮动的div元素,并且在隐藏了一些元素之后,如果其他元素被动画化将是很好的。 可能吗?

你可以做这样的事情 ,它使用一个CSS类来切换一些JavaScript和CSS转换来做你正在寻找的而不是使用jQuery。

 // The relevant CSS .item { // Your original code here -webkit-transition: all .5s ease-in-out; -moz-transition: all .5s ease-in-out; -o-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } .hide { width: 0; height: 0; opacity: 0; margin: 0; padding: 0; } // The JavaScript var items = document.getElementsByClassName('item'); for(var i = 0; i < items.length; i ++) { items[i].onclick = function() { this.classList.toggle('hide'); } }; function addBack() { for(var i = 0; i < items.length; i ++) { items[i].classList.remove('hide'); } } 

我还拿出了你的按钮并添加了“添加所有元素”按钮:

  

如果你已经在项目的其他地方使用了jQuery,我也制作了这个jQuery版本 。 这是JavaScript的代码:

 function addBack() { $('.item').each(function() { $(this).removeClass('hide'); }); } $('.item').on('click', function() { $(this).toggleClass('hide'); }); 

此外,您不需要任何ID,因此如果您愿意,可以将它们取出。

一种方法是用占位符替换要删除的div,然后为占位符和原始动画添加动画。

使用此片段: 使用jQuery将元素定位在另一个元素上

您的代码可以更改为这样的代码(我在此处单击该项以触发删除):

演示

CSS

 div { box-sizing: border-box; } .item, .placeholder { float: left; width: 100px; height: 100px; border: 1px solid black; margin: 5px; position: relative; background: white; -webkit-transition: all 1s ease; } .placeholder { opacity: 0; border: 0px; } .item.hide { border: 1px solid rgba(0,0,0,0); margin: 0px; top: 500px; opacity: 0; overflow: hidden; z-index: -1; } .placeholder.hide { width: 0; height: 0; margin: 0; border: 0; } 

脚本

 $('.item').on('click', function(evt) { var $this = $(this); var $new = $($this.clone()); $new.addClass('placeholder'); $this.replaceWith($new); $this.positionOn($new); $this.appendTo($('body')); setTimeout(function() { $this.css({top: '', left: ''}); $this.addClass('hide'); $new.addClass('hide'); }, 0); }); 

Snippet来自: 使用jQuery将元素定位在另一个元素上

 // Reference: http://snippets.aktagon.com/snippets/310-positioning-an-element-over-another-element-with-jquery $.fn.positionOn = function(element, align) { return this.each(function() { var target = $(this); var position = element.position(); var x = position.left; var y = position.top; if(align == 'right') { x -= (target.outerWidth() - element.outerWidth()); } else if(align == 'center') { x -= target.outerWidth() / 2 - element.outerWidth() / 2; } target.css({ position: 'absolute', zIndex: 5000, top: y, left: x }); }); }; 

现在,当网格崩溃时,您的旧div会移动。

如果您愿意在代码中添加另一个库,请查看Metafizzy的Masonry / Isotope 。 他们的目的只是为了做这件事。

你不需要CSS转换。 只需使用.fadeout()而不是.fadeout()

  

见这里: https : //jsfiddle.net/st1o8ngp/