为了账号安全,请及时绑定邮箱和手机立即绑定

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰

已采纳回答 / 慕数据9685367
javascript的计算能力不强,用小数的方式来做数学运算容易得出错误结果,建议需要运算的代码尽量避开小数。

已采纳回答 / 慕粉190336714
用控制台查了一下,你的speed 是不变的,这样的话,if(obj.offsetWidth==target)有可能永远都不满足,例如:用速度9从两百运动到400,会刚好错过400这个值,计时器就一直没被清除。解决方法:把speed的计算放进setInterval里面的那个参数下代码:        function startMove(obj,target){            clearInterval(obj.timer);            obj.timer=setInterval(fun...

已采纳回答 / L大超
把 startMove(-200);的方法换成onmouseout<...图片...>

已采纳回答 / 慕粉1729504738
getElementById('samll');small拼错了,大兄弟

已采纳回答 / 爱3
你说的animate是指直接调用这个方法,主要传参就行了吗?

已采纳回答 / Zzmkiv
代码是没错的,但是你没有清除浏览器默认样式。*{margin:0;padding:0},所以你这里每次加上speed  10px,得不到left值为0,会直接由-2px跳到16px

已采纳回答 / 为彭十七加油oO
因为如果这样先判断有fn()方法时,会先执行调用fn()方法然后执行clearintval(),但是这时候浏览器并不会等到fn()方法执行完才去调用clearintval().它会直接清除fn()内的定时器。正好老师下节课会讲到...

已采纳回答 / 慕粉1474362937
还有,setTimeOut和setInterval函数是异步函数

已采纳回答 / 丶痞子绅士
两种方式除了表面上的区别,浏览器解析和效率上没有本质区别。第一种方式只是多了个匿名函数在里面调用sMove()函数第二种方式直接调用sMove()函数没有优劣之分,如果一定要说哪个好,我本人推崇第一种方式,原因是我用的IDE可以直接转到函数的定义,而第二种方式只有函数名,如果以后代码量很多,不能很方便地找到这个函数本身。

已采纳回答 / qq_三六七_0
script标签不能写在<style></style>之间,而且函数名是startMove,调用的时候写出startMove1

已采纳回答 / qq_终究落下_04415476
你把那些定义speed 的内容放在setInterval()里面试一试

已采纳回答 / qq_等风来_55
因为每一次的循环调用都初始化了它的值  使其无法叠加
课程须知
1.您至少已经具备JavaSript的知识。2.您已经具备一些开发经验。
老师告诉你能学到什么?
1.使用定时器实现简单动画。2.如何一步步封装库。2.培养编程的思想。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消