在jQuery .animate中使用Modernizr.prefixed

时间:2013-07-15 11:06:19

标签: javascript jquery jquery-animate modernizr vendor-prefix

我不熟悉jQuery语法,因为PHP是我的事。

我正在尝试制作一个jQuery动画,但是在多个值上使用了正确的供应商前缀,但是我对Modernizr.prefixed用法的理解让我感到失望。

我想要的是:

    $('.rightbox3d').animate({
        opacity: 1
        ,top:"60px"
        ,Modernizr.prefixed('transform'):"translateY(-200px)"
        ,Modernizr.prefixed('scale'):2
    }, 4000);

即。我想在动画样式列表中包含供应商前缀,但我得到语法错误 - 意外令牌。

我尝试过使用过 var transformProperty = Modernizr.prefixed? Modernizr.prefixed('transform'):'transform'; 但它只允许列出一种风格 即:$(“。rightbox3d”)。animate(transformProperty,“translateY(-200px)”); 当我想要的是多种风格,如变换,不透明度,比例等。

我注意到这行代码在transformProperty部分周围没有括号括号,而列表则有 例如。 $( 'rightbox3d')。动画({             不透明度:1             ,顶部: “ - 200像素”         },4000,function(){             //动画完成         });

但我无法理解它。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

所以,你将不得不进行一次大跃进。 CSS Transitions与jQuery.animate不同。

这是一个很好的介绍。 https://www.webkit.org/blog/138/

所以,首先让我们认识到我们不能再做同样的事了

if (!Modernizr.csstransitions || Modernizr.csstransforms3d) {
   // use some css
} else {
   // use some jQuery
}

现在,让我们用你的例子填写

if (!Modernizr.csstransitions || !Modernizr.csstransforms3d) {
  // Old jQuery version
  $('.rightbox3d').animate({
    opacity: 1,
    top: "-200px",
    width: 2 * $('.rightbox3d').width(),
    height: 2 * $('.rightbox3d').height()
  }, 4000);
} else {
  // Modern cool version
  // The transform is moving/rotating/stretching we want to do
  // The transition is the animation we want
  $('.rightbox3d').css({
    opacity: 1,
    transform: 'translateY(-200px) scale(2)',
    transition: 'all 4000ms ease-in-out'
  });
}

我认为应该为你清理它。 :)