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

前端之家收集整理的这篇文章主要介绍了jquery – 当div移动以填充淡出的其他div留下的空白空间时,如何为div设置动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

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

  1. $('div').click(
  2. function() {
  3. $(this).animate({
  4. 'height': 0,'opacity': 0
  5. },750,function() {
  6. $(this).remove();
  7. });
  8. });​
  9. @H_403_9@

JS Fiddle demo.

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

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

  1. .item{
  2. /* other css removed for brevity */
  3. -webkit-transition: all 1s linear;
  4. -moz-transition: all 1s linear;
  5. -o-transition: all 1s linear;
  6. -ms-transition: all 1s linear;
  7. transition: all 1s linear;
  8. }
  9. @H_403_9@

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

  1. .hidden {
  2. width: 0; /* reset everything that might affect the size/visibility */
  3. height: 0;
  4. padding: 0;
  5. margin: 0;
  6. opacity: 0;
  7. -webkit-transition: all 1s linear;
  8. -moz-transition: all 1s linear;
  9. -o-transition: all 1s linear;
  10. -ms-transition: all 1s linear;
  11. transition: all 1s linear;
  12. }
  13. @H_403_9@

使用以下jQuery:

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

JS Fiddle demo.

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

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

猜你在找的HTML相关文章