美文网首页
JQuery的slideToggle动画卡顿

JQuery的slideToggle动画卡顿

作者: 已经不在简书了 | 来源:发表于2017-12-05 15:50 被阅读1061次

事件起因
笔者在用 JQuery 制作一个竖向手风琴菜单时(如图1),发现用slideToggle类的动画过程中出现卡顿。

图1

JS代码如下(仅仅为了强调使用了slide动画...):

$('.menu-item').click(function () {
      var $this = $(this);

      if ($this.hasClass('open')) {
            $this.removeClass('open');
            $this.siblings('.menu-item-second').slideUp();
      } else {
            $this.addClass('open');
            $this.parent().siblings().children('.menu-item').removeClass('open');
            $this.parent().siblings().children('.menu-item-second').slideUp();
            $this.siblings('.menu-item-second').slideDown('100');
      }
 });

原因
后来发现原因是在前面的 css 代码中,对执行动画的元素使用了transition属性,并且过渡的效果写的是all,代码如下:

.menu-item-second li {
    background-color: #ddd;
    transition: all 300ms;
}
.menu-item-second li:hover {
    background-color: #fff;
}

修改
修改后的代码将all属性改为background-color后恢复流畅效果!

 transition: background-color 300ms;

分析
查阅 JQuery 文档后发现:

通过高度变化来切换所有匹配元素的可见性,并在切换完成后可选地触发一个回调函数。
这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式隐藏或显示。

slideToggle , slideDown , slideUp原理是调整高度值,transition: all 300ms; 过渡的效果也包含高度变化,两者产生不良反应。


拓展
另一方面,笔者之前写过一个案例,其中对同一个元素同时使用过 slideDown
slideUp,两种效果的动画时长不同,但是却不会影响其流畅度。


能力所限,未深入底层。

相关文章

  • JQuery的slideToggle动画卡顿

    事件起因笔者在用 JQuery 制作一个竖向手风琴菜单时(如图1),发现用slideToggle类的动画过程中出现...

  • 2019-04-10

    jquery 特殊效果 slideup 上展 slidedown下展 slideToggle 切换 jquery ...

  • 应用卡顿问题分析

    1.应用卡顿原理分析 卡顿问题的表现启动卡顿:启动白屏和启动动画卡顿运行卡顿:点击相应慢,列表滑动卡,动画卡顿 原...

  • 2018-12-08

    jQuery做选项卡 jQuery属性操作 jQuery特殊效果 jQuery动画 jQuery循环 元素绝对位置...

  • Flutter Food App

    模拟器动画略有卡顿。

  • reactnative 动画卡顿

    react native 中有两种animation一种是 AnimationView 一种为layoutAnim...

  • SwiftUI-火星探测器着陆升起动画

    案列展示 动画使用gif展示,原动画不存在卡顿 案例源码

  • jquery动画和循环

    jquery特殊效果 jquery动画 jquery循环

  • jQuery特殊效果

    jQuery特殊效果 jQuery动画

  • Android动画卡顿问题

    父布局执行动画后,再给这个父布局里的子控件执行动画,会出现卡顿问题,解决办法就是clean掉父布局的动画,再执行子...

网友评论

      本文标题:JQuery的slideToggle动画卡顿

      本文链接:https://www.haomeiwen.com/subject/bxjcixtx.html