老师,可以详细讲一下这块代码的逻辑吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2023-04-12 13:20:58

同学你好,解答如下:

在捋逻辑之前,咱们需要知道,过渡需要设置2个属性transition-property(让哪个属性有动画)、 transition-duration(过渡时间是多少)。二者都具备了,对应的属性改变时,就可以有动画。

接下来捋一下这里的逻辑:

1、实例化时,先执行init方法进行初始化:

https://img1.sycdn.imooc.com//climg/64363c4409e8a7e407110262.jpg

在init方法中,如果需要动画,则调用openAnimation方法,给元素添加类名:

https://img1.sycdn.imooc.com//climg/64363ca009d67b3206240596.jpg

https://img1.sycdn.imooc.com//climg/64363cba09516b5008820143.jpg

该类名给元素添加了transition-property样式,让元素具有过渡效果的一个条件:

https://img1.sycdn.imooc.com//climg/64363ce909b088ed08450179.jpg

https://img1.sycdn.imooc.com//climg/64363d1609b706d105940175.jpg

2、接下来,元素带着动画运动时,则调用了moveWithAnimation方法。

该方法中,只需要设置过渡时间ransition-duration就行了(添加第二个条件),因为init时,已经设置过transition-property了:

https://img1.sycdn.imooc.com//climg/64363e07092d48e507910185.jpg

设置完ransition-duration,过渡的基本条件就具备了,可以动画了:

https://img1.sycdn.imooc.com//climg/64363e3809b12b3107690322.jpg

元素移动完成,会自动触发transitionend方法:

https://img1.sycdn.imooc.com//climg/64363e6509a5b3be07650403.jpg

该方法中,将动画关闭,即动画完成,就关闭动画

https://img1.sycdn.imooc.com//climg/64363e7009b7af8b07470406.jpg

注意关闭动画的方式并不是把transition-property属性对应的类名去掉,而是将过渡时间设置成了0:

https://img1.sycdn.imooc.com//climg/64363ec90948611409830155.jpg

祝学习愉快!

  • 为什么不能将类名去掉来关闭动画?

    2023-05-12 22:26:35
  • 代码的方式并不唯一,同学的思路也是可以的,但是讲师没有这么做,讲师的思路和同学不一样,也是对的。

    编程是灵活的,只要能实现需求,都是可行思路。

    2023-05-15 10:17:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师