jquery – 当div移动以填充淡出的其他div留下的空白空间时,如何为div设置动画

我有一组div,每个div对应一组类别.当我点击一个过滤器时,这将改变div的类,并根据这些类别使它们变得易碎或隐藏.我控制div如何淡入/淡出并且它们缓慢而漂亮但每次div消失时,保持不变的那些突然移动以填充被隐藏的空间留下的空白空间.

如何在其他人消失并留下空白空间之后平滑未隐藏的div的移动?

 //Before this goes a long function that decides wich divs will get their class changed
 $('#work-container > div[class*=visible]').fadeIn('slow','swing');
 $('#work-container > div[class*=hidden]').fadeOut('slow','swing');

编辑:http://jsfiddle.net/Ccswn/3/小提琴的东西

最佳答案
我建议使用animate()代替fadeOut():

$('div').click(
    function() {
        $(this).animate({
            'height': 0,'opacity': 0
        },750,function() {
            $(this).remove();
        });
    });​

JS Fiddle demo.

编辑以合并jQuery / CSS解决方案:

更改.item的CSS以包含以下内容

.item{
    /* other css removed for brevity */
    -webkit-transition: all 1s linear;
    -moz-transition: all 1s linear;
    -o-transition: all 1s linear;
    -ms-transition: all 1s linear;
    transition: all 1s linear;
}

并将a.hidden更改为以下内容

.hidden {
    width: 0; /* reset everything that might affect the size/visibility */
    height: 0;
    padding: 0;
    margin: 0;
    opacity: 0;
    -webkit-transition: all 1s linear;
    -moz-transition: all 1s linear;
    -o-transition: all 1s linear;
    -ms-transition: all 1s linear;
    transition: all 1s linear;
}

使用以下jQuery:

// content animate
$('#work-container > div[class*=hidden]').addClass('hidden');
return false;

JS Fiddle demo.

然后一切似乎都按照你的意愿运作.虽然我没有尝试按照上面的块中的.addClass(‘visible’)进行操作,但我还是不管它.

这确实需要一个支持CSS过渡的浏览器(并且支持不透明度),所以它在你的用例中可能并不完美.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些