0

我最近在插件构建期间升级到了 Firefox 14.0.1。该插件同时为边框半径、边框宽度、边框颜色以及各种其他属性设置动画。其他浏览器或以前版本的 FireFox 没有任何问题,但在更新后,我注意到在使用旋转进行动画处理时边界半径动画期间出现严重的碎片/伪影。以下是我用于旋转的代码:

/* ROTATE */
function animate_rotate(degree,Speed,AnimateDegree){
   /* FACTOR DEGREE */if(degree<AnimateDegree){
        ++degree; Screens.current_rotate=degree;
  }else if(degree>AnimateDegree){
        --degree; Screens.current_rotate=degree;
  };
  /* APPLY THE NEW ROTATION ANGLE TO IE>9 */
  if(!ievers<=8){
       $ScreensLightbox.css({'-moz-transform':'translateX(0) rotate('+degree+'deg)','-moz-transform-origin':''+Screens.LBRotateHandle[0]+'% '+Screens.LBRotateHandle[1]+'%','-webkit-transform':'translateX(0) rotate('+degree+'deg)','-webkit-transform-origin':''+Screens.LBRotateHandle[0]+'% '+Screens.LBRotateHandle[1]+'%',/* Opera */'-o-transform':'translateX(0) rotate('+degree+'deg)','-o-transform-origin':''+Screens.LBRotateHandle[0]+'% '+Screens.LBRotateHandle[1]+'%',/* IE>=9 */'-ms-transform':'rotate('+degree+'deg)','-ms-transform-origin':''+Screens.LBRotateHandle[0]+'% '+Screens.LBRotateHandle[1]+'%'});
   };
/* PUSH INSTANCE TIMER-ON ARRAY */
Screens.Rotate_Timer.push(setTimeout(function({animate_rotate(degree,Speed,AnimateDegree)},Speed/63));
};

这是动画边界半径的函数:

/* BORDER RADIUS */
function animate_border_radius(SetBorderRadius,AnimateBorderRadius,Speed,Effect){
     $ScreensLightbox.css({'border-top-left-radius':SetBorderRadius,'border-top-right-radius':SetBorderRadius,'border-bottom-left-radius':SetBorderRadius,'border-bottom-right-radius':SetBorderRadius})
    .animate({borderTopLeftRadius:AnimateBorderRadius, borderTopRightRadius:AnimateBorderRadius,borderBottomLeftRadius:AnimateBorderRadius,borderBottomRightRadius:AnimateBorderRadius,WebkitBorderTopLeftRadius:AnimateBorderRadius,WebkitBorderTopRightRadius:AnimateBorderRadius,WebkitBorderBottomLeftRadius:AnimateBorderRadius,WebkitBorderBottomRightRadius:AnimateBorderRadius,MozBorderRadius:AnimateBorderRadius},
    {duration:Speed,queue:false,specialEasing:{borderTopLeftRadius:Effect,borderTopRightRadius:Effect,borderBottomLeftRadius:Effect,borderBottomRightRadius:Effect,WebkitBorderTopLeftRadius:Effect,WebkitBorderTopRightRadius:Effect,WebkitBorderBottomLeftRadius:Effect,WebkitBorderBottomRightRadius:Effect,MozBorderRadius:Effect}});
    };

尝试在最新的 Firefox 中同时设置 Rotate 和 Border Radius 动画时遇到类似问题的人?谢谢!

4

2 回答 2

1

我们看到了一个非常相似的问题。我们有一些使用动画功能淡入视野的图像。在 14.0.1 版本之前,在包括 FF 在内的所有浏览器中都运行良好。

// image animation
$("#imgDisplay img").each(function(index) {
    var tm = 800 * index;
    var imgTop = $(this).css('margin-top');
    arr = imgTop.split('px');
    var imgTopStart = (arr[0]*1)-50;
    $(this).css({
        "opacity": "0",
        "margin-top": imgTopStart+"px"
    }).show();

    $(this).delay(tm).animate({
        opacity: 1,
        "margin-top": imgTop
    }, 1500, function() {
        // Animation complete.
    });
});
于 2012-07-25T15:37:14.683 回答
1

我有一个类似的错误,添加 translateZ 有帮助。我不能确定这会对您的情况有所帮助,但值得尝试:

-moz-transform: rotate(10deg) translateZ(1px); 
于 2012-08-14T14:28:51.483 回答