自定义动画 (jQuery)

1jQuery中动画animate(上)

有些复杂的动画经过以前学到的几个动画函数是不可以实现,这时候就须要强大的animate方法了css

操做一个元素执行3秒的淡入动画,对比一下2组动画设置的区别算法

$(elem).fadeOut(3000)  
$(elem).animate({   
    opacity:0
},3000)

显而易见,animate方法更加灵活了,能够精确的控制样式属性从而执行动画ide

语法:函数

.animate( properties ,[ duration ], [ easing ], [ complete ] )
.animate( properties, options )

.animate()方法容许咱们在任意的数值的CSS属性上建立动画。2种语法使用,几乎差很少了,惟一必要的属性就是一组CSS属性键值对。这组属性和用于设置.css()方法的属性键值对相似,除了属性范围作了更多限制。第二个参数开始能够单独传递多个实参也能够合并成一个对象传递了性能

参数分解:动画

properties:一个或多个css属性的键值对所构成的Object对象。要特别注意全部用于动画的属性必须是数字的,除非另有说明;这些属性若是不是数字的将不能使用基本的jQuery功能。好比常见的,border、margin、padding、width、height、font、left、top、right、bottom、wordSpacing等等这些都是能产生动画效果的。background-color很明显不能够,由于参数是red或者GBG这样的值,很是用插件,不然正常状况下是不能只用动画效果的。注意,CSS 样式使用 DOM 名称(好比 "fontSize")来设置,而非 CSS 名称(好比 "font-size")。this

特别注意单位,属性值的单位像素(px),除非另有说明。单位em 和 %须要指定使用spa

.animate({
    left: 50, 
    width: '50px'   
    opacity: 'show',  
    fontSize: "10em",
}, 500);

除了定义数值,每一个属性能使用'show', 'hide', 和 'toggle'。这些快捷方式容许定制隐藏和显示动画用来控制元素的显示或隐藏插件

.animate({
    width: "toggle"
});

若是提供一个以+= 或 -=开始的值,那么目标值就是以这个属性的当前值加上或者减去给定的数字来计算的code

.animate({ 
    left: '+=50px'
}, "slow");

duration时间

动画执行的时间,持续时间是以毫秒为单位的;值越大表示动画执行的越慢,不是越快。还能够提供'fast' 和 'slow'字符串,分别表示持续时间为200 和 600毫秒。

easing动画运动的算法

jQuery库中默认调用 swing。若是须要其余的动画算法,请查找相关的插件

complete回调

动画完成时执行的函数,这个能够保证当前动画肯定完成后发会触发

2jQuery中动画animate(下)

animate在执行动画中,若是须要观察动画的一些执行状况,或者在动画进行中的某一时刻进行一些其余处理,咱们能够经过animate提供的第二种设置语法,传递一个对象参数,能够拿到动画执行状态一些通知

.animate( properties, options )

options参数

  • duration - 设置动画执行的时间
  • easing - 规定要使用的 easing 函数,过渡使用哪一种缓动函数
  • step:规定每一个动画的每一步完成以后要执行的函数
  • progress:每一次动画调用的时候会执行这个回调,就是一个进度的概念
  • complete:动画完成回调

其中最关键的一点就是:

若是多个元素执行动画,回调将在每一个匹配的元素上执行一次,不是做为整个动画执行一次

列出经常使用的方式:

$('#elem').animate({
    width: 'toggle',  
    height: 'toggle'
  }, {
    duration: 5000,
    specialEasing: {
      width: 'linear',
      height: 'easeOutBounce'
    },
    complete: function() {
      $(this).after('<div>Animation complete.</div>');
    }
  });

3jQuery中中止动画stop

动画在执行过程当中是容许被暂停的,当一个元素调用.stop()方法,当前正在运行的动画(若是有的话)当即中止

语法:

.stop( [clearQueue ], [ jumpToEnd ] )
.stop( [queue ], [ clearQueue ] ,[ jumpToEnd ] )

stop还有几个可选的参数,简单来讲能够这3种状况

  • .stop(); 中止当前动画,点击在暂停处继续开始
  • .stop(true); 若是同一元素调用多个动画方法,还没有被执行的动画被放置在元素的效果队列中。这些动画不会开始,直到第一个完成。当调用.stop()的时候,队列中的下一个动画当即开始。若是clearQueue参数提供true值,那么在队列中的动画其他被删除并永远不会运行
  • .stop(true,true); 当前动画将中止,但该元素上的 CSS 属性会被马上修改为动画的目标值

简单的说:参考下面代码、

$("#aaron").animate({
    height: 300
}, 5000)
$("#aaron").animate({
    width: 300
}, 5000)
$("#aaron").animate({
    opacity: 0.6
}, 2000)
  1. stop():只会中止第一个动画,第二个第三个继续
  2. stop(true):中止第一个、第二个和第三个动画
  3. stop(true ture):中止动画,直接跳到第一个动画的最终状态 
相关文章
相关标签/搜索