3D转换(translate3D)似乎导致移动设备上缓慢的jQuery动画
我正在使用CSS翻译3D并缩放3D以获得响应式导航菜单。 在触摸设备上,更具体地说,iPhone,它在同一页面上导致单独的jQuery动画执行缓慢,几乎就像在动画时闪烁一样。 任何人都可以解释这个问题吗?
如果它有任何相关性,我使用的是SASS:
nav { left: 0; @include transform( translate3d(-100%, 0, 0) ); @include backface-visibility; .nav__block { @include transition( -webkit-transform 500ms ease ); @include transition-delay( ease, 0s ); @include transform( translate3d(70%, 0, 0) scale3d(0.9, 0.9, 0.9) ); @include transform-origin( 50% 0% ); } } }
下面是一个缓慢运行的jQuery片段:
this.container.filter(':visible').animate({ 'left': '-=' + self.childWidth + 'px' }, 300).clearQueue();
感谢您提前的时间!
jQuery的动画function很可能是这种情况的罪魁祸首,因为它没有利用硬件加速,这是iPhone等移动设备上流畅性能所需要的。
您可以使用jQuery Animate Enhanced插件,该插件会覆盖jQuery animate函数并使用css3过渡。 这是一个演示:
JS小提琴演示
$(".container").animate({ 'left': '-=' + 400 + 'px', 'useTranslate3d': true }, 500);
我用iPad测试过。 实际上,如果删除对jQuery Animate Enhanced库的引用,您将看到移动设备上的性能下降。