IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    jquery animate step实现css3属性动画

    phpvar发表于 2015-06-27 11:25:02
    love 0
    jquery animation的工作原理是通过将元素的css样式从一个状态改变为另一个状态。css属性值是逐渐改变的,这样就可以创建动画效果。 但是animate方法下,只有数字值可创建动画(比如 “top:30px”),字符串值类型的值则是无法创建动画(比如 “background-color:red”)。而工作中我们遇到的更多是想通过jquery animate来控制 css3属性,而css3好多效果因为不是数值的,所以是没有办法直接通过animate()开发方法 实现的。如translate(), rotate(), scale(), skew(),等开发方法 ,这些开发方法 的一个特点就是它们的值是字符和数字混合在一起,如:rotate(360deg); 还好animate()方法有个stp参数规定动画执行的每一步都要执行step这个回调函数。我们可以用使用一个不影响元素效果显著的css值来触发animate()开发方法 ,然后在step回调函数中修改我们想要修改的值,这样就可以间接地实现动画了,实例: [runcode]jquery animate控制 css3属性[/runcode] 运行可看到动画效果,对于step这个关键参数的用法,可看下面的相关注释,网上的介绍几乎没有,纯属个人见解:<script> $(".demo").animate({ first:2, second:10 }, { step:function(n,fx){ // 动画元素的每个动画属性每一次动画效果的执行都将调用的函数。第1个参数是当前动画正在改变的属性的实时值(每1次动画过程中,属性值的实时反馈呈现);第2个参数为修改Tween 对象提供了一个机会来改变animate第1个参数中设置的属性在动画结束时的值。 // fx: jQuery.fx 原型对象的一个引用,其中包含了多项属性,比如 // 执行动画的元素:elem; // 动画正在改变的属性:prop; // 正在改变属性的当前值:now; // 正在改变属性的结束值:end; // 正在改变属性的单位:unit;等 // 可在这里改变animate第1个参数中设置的属性second在动画结束时的值 if(fx.prop=="second"){fx.end=5} console.log(fx.prop+": "+n); }, duration:2000 }) </script>


沪ICP备19023445号-2号
友情链接