微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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过渡的浏览器(并且支持不透明度),所以它在你的用例中可能并不完美.

原文地址:https://www.jb51.cc/html/425844.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐