使用 jQuery UI 或 CSS 动画 addClass 和 removeClass [重复]

Posted

技术标签:

【中文标题】使用 jQuery UI 或 CSS 动画 addClass 和 removeClass [重复]【英文标题】:Animating addClass & removeClass with jQueryUI or CSS [duplicate] 【发布时间】:2015-02-11 16:06:00 【问题描述】:

我的小提琴:http://jsfiddle.net/b2stctr8/

目标是通过单击图像来展开和折叠目标 div。我的方法是从一个带有 display:none 的折叠类开始。 javascript 删除类并允许显示 div。该代码有效,但我在尝试为动作设置动画时遇到了痛苦的时光。我正在加载 jQuery 和 jQueryUI。这是我当前的代码:

$('img.activator').click(
function()
    if ($('#mobileSelectors').hasClass('collapsed')) 
        $('#mobileSelectors').removeClass('collapsed', 200);
     else 
        $('#mobileSelectors').addClass('collapsed', 200);
    
);

回顾人们在 *** 上遇到的类似情况,我尝试重新安排我的 switchClass 函数以及解决方案中提到的 toggleClass。我没有成功。关于如何动画化这个函数有什么建议吗?

【问题讨论】:

【参考方案1】:

我想我得到了你想要的。

JSFiddle

我在您的代码中添加了一堆 CSS。我会尽力解释的。

#mobileSelectors 
    background: yellow;
    height:auto;
    max-height:500px;
    text-align:center;
    display:block;
    line-height:100px;
    margin:0;
    -webkit-transition: max-height 0.5s ease;
    -moz-transition: max-height 0.5s ease;
    -o-transition: max-height 0.5s ease;
    transition: max-height 0.5s ease;


#mobileSelectors.collapsed 
    max-height:0px;
    overflow:hidden;

首先,您只需要在基础元素上定义过渡。所以我把它从.collapsed 选择器中删除了。

您也不能转换 display 属性。因此,您将需要转换不同的属性。在我的小提琴中。我使用overflow:hidden 将折叠状态的max-height 设置为“0”。这会导致容器不显示。

在对象的选择器上,您可以通过将max-height 设置为比容器更高的值来重置这些值。在这种情况下,我使用了 500px,然后将 height 设置为自动。这样做是允许容器采用其内容的高度,而不是设置硬高度。

我还将转换值更改为仅转换max-height 而不是all

-webkit-transition: max-height 0.5s ease;
-moz-transition: max-height 0.5s ease;
-o-transition: max-height 0.5s ease;
transition: max-height 0.5s ease;

最后,我将 Jquery 改为使用 .toggleClass

$('img.activator').click(
    function()
        $('#mobileSelectors').toggleClass("collapsed");
    
);

【讨论】:

谢谢章。这非常有效,因为我的 div 内容不会经常更改。我没有想过尝试不同的属性,但既然你提到了它,过渡只适用于高度调整而不是显示值是有道理的。您的解释是 100% 完美的,谢谢。已实施并有效。【参考方案2】:

您能否更详细地说明您要查找的动画类型?您是否希望使用 CSS 或 JQuery 制作动画?有很多方法可以解决它,我只是想为您的特定情况找到最好的方法。

如果您尝试使用 javascript 方法,一些有用的链接 Jquery Animate API. 另一个展示如何使用动画的链接来自 web tuts 我还发现它在尝试查看 codepen 中的实时工作示例时非常有用。

【讨论】:

我将 CSS 中的动画放在类(和 div)上,认为它们本来就可以工作。运气不好。

以上是关于使用 jQuery UI 或 CSS 动画 addClass 和 removeClass [重复]的主要内容,如果未能解决你的问题,请参考以下文章

动画 jQuery Ui 位置()

为 CSS/JS/jQuery 动画使用 Velocity.js 或 Transit.js?

带有纯 jQuery 动画的特殊颜色过渡效果 // 在 ui 或其他库上

jQuery-UI组件Effects

使用 JQuery(动画)更改 CSS

如何制作 Jquery 或 CSS3 动画“如果可以,请抓住我”按钮?