折叠/展开时动画字体真棒雪佛龙图标旋转

Posted

技术标签:

【中文标题】折叠/展开时动画字体真棒雪佛龙图标旋转【英文标题】:Animate Font Awesome Chevron icon rotation on collapse/expand 【发布时间】:2018-10-01 15:37:20 【问题描述】:

我希望我的图标在可折叠内容被隐藏或显示时旋转可见。

这是我添加 V 形图标并旋转它的函数:

$('[data-toggle="collapse"]').each(function()
    var collapser = $(this);
    // TODO: 'collapsed' class should be added manually if the toggled element is not shown
    // i.e., if you remove 'show' class, add 'collapsed' class, or this function is confused
    collapser.append('<span style="float:right;"><i class="fa fa-chevron-right'
            +(collapser.hasClass('collapsed')?'':' fa-rotate-90')
            +'"/></span>');
    collapser.on('click', function()
        var chevron = collapser.find('.fa-chevron-right'); // it was replaced with svg
        if (collapser.hasClass('collapsed')) 
            chevron.addClass('fa-rotate-90');
         else 
            chevron.removeClass('fa-rotate-90');
                    
    );
);

我想通过仅修改此代码来添加更平滑的过渡,但没有 css 会更好。 CSS 对我来说太混乱了

欢迎对此代码提出任何其他批评

【问题讨论】:

【参考方案1】:

为了使您的动画更流畅,您可以使用 css transition 属性。

只需将此代码添加到您的 css 中:

.fa-chevron-right 
  -webkit-transition: transform .4s; /* Safari */
  transition: transform .4s;

或者您可以通过修改代码appending element 直接使用jQuery 添加CSS(不推荐):

 collapser.append('<span style="float:right;"><i style="transition: transform .4s;" class="fa fa-chevron-right'
    +(collapser.hasClass('collapsed')?'':' fa-rotate-90')
    +'"/></span>');

您可以在此处了解有关 CSS transitions 的更多信息: https://www.w3schools.com/css/css3_transitions.asp

一般来说,我建议您学习 CSS 并尽可能使用它来创建动画。您会发现它更容易,而且性能也更好。

【讨论】:

抱歉,这并没有改变任何东西。我创建了 css 文件,并在 Crome 调试器中看到应用了该样式。尽管如此,它只是在没有过渡的情况下发生了变化。可能是因为我正在添加一个类 (fa-rotate-90) 而不是修改某些属性,因此浏览器看不到它如何将一种表示转换为另一种表示?换句话说,可能我必须修改 transform: rotate(90deg); 而不是添加那个 F.A. 类?

以上是关于折叠/展开时动画字体真棒雪佛龙图标旋转的主要内容,如果未能解决你的问题,请参考以下文章

引导列表组中的右对齐动画字体真棒图标

Bootstrap 3 用雪佛龙图标折叠显示状态

在保持对齐的同时以相反的方向旋转 div 和文本?

setState 不更新字体真棒图标

jqGrid:字体真棒图标

字体真棒显示方形而不是图标