Educoder jQuery动画 第4关:jQuery动画效果——自定义动画
任务描述
本关任务:掌握jQuery
常见的动画效果——自定义动画,实现的动态效果如下图。
相关知识
为了完成本关任务,你需要掌握:1.平移动画,2.相对值,3.stop()
函数 。
基本的结构如下:
<button class="stop">动画开始</button>
<div class="item">Hello</div>
<style>
.item{
position: absolute;
left: 100px;
width: 100px;
height: 100px;
font-size: 24px;
}
</style>
效果如下:
平移动画
这里需要实现的效果如下:
这个可以分解为两个动作:右移和左移。先说右移的情况,在右移过程中,宽度变宽了,字体变大了。
先实现往右移动,代码如下:
$(".item").animate({left: '500px'}, 2000);
说明如下:
-
移动改变的是
left
值和top
值 ,所以在样式中一定要有**定位position
**。否则,没有定位,也就没有了left
属性和top
属性,也就不能移动了; -
基本结构中的样式
left:100px
作为初始状态,往右移动的实现代码中,left:'500px'
作为这个动画的最终状态,实际上移动了400px
; -
2000
表示这个动画完成的时间,是2000
毫秒,可选的值是slow,fast,毫秒
。
现在实现整个右移过程,实现代码如下:
$(".item").animate({left: '500px',width:'200px',fontSize:'50px'},2000)
可以发现:就是在往右移动的代码中添加了宽度和字体,需要注意的是,这里字体font-size
的写法变成了fontSize
,是用驼峰命名法。规则如下:
-
第一个单词以小写字母开始;
-
从第二个单词开始以后的每个单词的首字母都大写。
其他属性中带有-
的,在动画中也都用驼峰命名法,比如:padding-left
变为paddingLeft
。
现在实现左移的过程就很容易了,代码如下:
$(".item").animate({left: '100px', width: '10px', fontSize: '24px'}, 2000)
jQuery
最大的特点就是可以链式调用,这里也不例外,右移左移的过程,简写如下:
$(".item").animate({left: '500px',width:'200px',fontSize:'50px'},2000)
.animate({left: '100px', width: '10px', fontSize: '24px'}, 2000)
举一反三:前面实现的动画效果和自定义动画,都是可以链式调用的,比如:$(".box").show().fadeOut().slideUp().animate({width: '100px'});
相对值
需要实现的效果如下:
这个动画每次移动相同的距离,当然可以在现有的left
值的基础上,加上移动的距离作为一段动画的最终状态,但是这样太麻烦了,每次都得算距离,可不可以只用相对移动的距离呢?当然可以,实现代码如下:
$(".item").animate({ left: '+=200px', borderRadius: '50%'},2000)
这行代码表示向右移动的距离为200px
,在移动的过程中,从正方形变为圆 , 左移用-=
。
stop()参数
现在有一个问题:当连续点击按钮【动画开始】,在点击完后,动画还在执行(点击多少次,执行多少次),需求是把一个时间段的连续点击作为一次点击。连续点击的效果图如下:
解决办法就是,在第一个动画执行完后,把后面等待的动画都清除掉。后面等待的动画可以看作一个队列,只要把这个队列清除就可以了。
这里用停止动画的方法stop()
,它是有两个参数的,都是可选的,参数详情如下:
-
第一个参数:是否清除动画队列,
true
表示是,false
表示否,默认是false
; -
第二个参数:是否立即完成当前动画,
true
表示是,false
表示否,默认是false
。
实现代码如下:
$(".item").stop(true,false).animate({left: '+=200px', borderRadius: '50%'}, 2000)
效果如下:
这里如果把stop()
的第二个参数设为true
,会发生什么情况呢?效果图如下:
当连续点击第二次的时候,第一次的动画会立即执行,就会出现“闪现”的情况。
总结:不知道你注意到了没有,jQuery
动画能操作的属性都是有数值的,比如:width,height,opacity,font-size,left
等。颜色、背景色是不能操作的,想用的话,有颜色动画插件,可以自己试一下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!