jQuery 动画

1.显示/隐藏/切换

  • 本质:操作内联样式,隐藏时display设置为none,显示时自动还原原来的display属性值
  • 动画原理:执行动画时,宽高以渐变的形式变大或者缩小
  • 相关方法
方法名 说明
show(duration,cb) 显示元素,支持动画效果(可选),还支持回调(可选)
hide(duration,cb) 隐藏元素,支持动画效果(可选),还支持回调(可选)
toggle(duration,cb) 切换显示/隐藏元素,支持动画效果(可选),还支持回调(可选)
  • 参数说明:
    参数一(可选):动画时长,默认为0,即没有动画效果,传递的参数可以是数字(毫秒),也可以是关键字(fast/normal/slow 相当于数值的 200/400/600 )
    参数二(可选):动画完成后执行的回调函数
$("a").show('fast') //动画持续200毫秒
$("a").hide(600) //动画持续600毫秒
$("a").toggle() //不传递持续时间没有动画效果
$("a").toggle('xxx') //关键字错误,相当于传递了normal

2.滑入/滑出/切换

  • 本质:操作内联样式,隐藏时display设置为none,显示时自动还原原来的display属性值
  • 动画原理:执行动画时,高度以渐变的形式变大或者缩小,宽度不变
  • 相关方法
方法名 说明
slideDown(duration,cb) 显示元素,支持动画效果(可选),还支持回调(可选)
slideUp(duration,cb) 隐藏元素,支持动画效果(可选),还支持回调(可选)
slideToggle(duration,cb) 切换显示/隐藏元素,支持动画效果(可选),还支持回调(可选)
  • 参数说明:
    参数一(可选):动画时长,默认为0,即没有动画效果,传递的参数可以是数字(毫秒),也可以是关键字(fast/normal/slow 相当于数值的 200/400/600 )
    参数二(可选):动画完成后执行的回调函数
$("a").slideDown('fast') //动画持续200毫秒
$("a").slideUp(600) //动画持续600毫秒
$("a").slideToggle() //不传递持续时间默认400ms
$("a").slideToggle('xxx') //关键字错误,相当于传递了normal

3.淡入/淡出/切换

  • 本质:操作内联样式,隐藏时display设置为none,显示时自动还原原来的display属性值
  • 动画原理:执行动画时,透明度以渐变的形式变大或者缩小
  • 相关方法
方法名 说明
fadeIn(duration,cb) 显示元素,支持动画效果(可选),还支持回调(可选)
fadeOut(duration,cb) 隐藏元素,支持动画效果(可选),还支持回调(可选)
fadeToggle(duration,cb) 切换显示/隐藏元素,支持动画效果(可选),还支持回调(可选)
  • 参数说明:
    参数一(可选):动画时长,默认为0,即没有动画效果,传递的参数可以是数字(毫秒),也可以是关键字(fast/normal/slow 相当于数值的 200/400/600 )
    参数二(可选):动画完成后执行的回调函数
$("a").fadeIn('fast') //动画持续200毫秒
$("a").fadeOut(600) //动画持续600毫秒
$("a").fadeToggle() //不传递持续时间默认400ms
$("a").fadeToggle('xxx') //关键字错误,相当于传递了normal

4.淡入程度 fadeTo()

  • 作用:让元素以动画的形式透明化
  • 语法:fadeTo()
  • 参数说明:
    参数一:必需,动画时长,传递的参数是数字,也可以是关键字
    参数二:必需,opacity的值
    参数三:可选,时间曲线,默认"swing"- 在开头/结尾移动慢,在中间移动快 "linear" - 匀速移动
    参数四:可选,动画完成后的回调函数
$("a").fadeTo('slow',0)
$("a").fadeTo(800,1)
$("a").fadeTo(1000,0.5,"swing")
$("a").fadeTo(1000,1,"linear")

5.自定义动画 animate()

  • animate():给元素设定了目标属性,并以过渡的形式达到最终的效果(必须有数值的属性才能有动画效果)
  • 参数说明:
    参数一:必选,规定执行动画的属性,已对象的形式传入
    参数二:可选,动画持续时长,默认200毫秒
    参数三:可选,时间曲线,默认swing
    参数四:可选,动画完成后的回调函数
//基本使用
$('.box').animate({left:'600px'});

//设置时长
$('.box').animate({left:'600px'},200); //200毫秒
$('.box').animate({left:'600px'},'fast'); //200毫秒

//时间曲线
$('.box').animate({left:'600px'},2000,'swing’);//缓动
$('.box').animate({left:'600px'},2000,'linear'); //匀速

6.实现原理

  • 原理就是css3中的渐变,只不过用js模拟而已,通过定时器动态改变宽高或者透明度

7.清除动画队列 stop()

  • 由来:如果一个元素的动画队列未完成,又触发了下一个动画队列,默认就会 “积压” 很多动画队列。例如;

  • 后面的动画要进来,就要考虑两个因素:
    1.是否要清除前面的队列?
    2.从何处开始新的动画?在积压一系列动画的同时触发新的动画效果的时候,当前元素的动画肯定还在进行中,新的动画是从当前帧开始还是最终帧开始?

  • stop()方法的两个参数描述的就是这两个问题:
    参数一:可选。是否清除队列。默认是 false。
    参数二:可选。布尔值,规定是否立即完成当前的动画。默认是 false(当前帧开始新的动画)
    无论如何,当前正在进行的那一轮动画是保不住的了

  • 参数一测试:先积压动画队列,在运行stop(true),可以看出stop(true)会清除已经积压的动画

  • 参数二测试:不传参数二,也就是默认false(当前帧开始新的动画)
$("a").stop(true).slideToggle(2000)

  • 参数二测试::传入参数二(从最终帧开始新的动画)
$("a").stop(true,true).slideToggle(2000)

posted @ 2019-10-06 11:27  ---空白---  阅读(523)  评论(0编辑  收藏  举报