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

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
  • 获取样式
    查看全部
    0 采集 收起 来源:获取样式

    2016-05-22

  • filter:alpha(opacity:30) opacity:0.3 这两个都是设置透明度,其中一个适合IE另一个适合非IE浏览器
    查看全部
    0 采集 收起 来源:JS多物体动画

    2016-05-22

  • 多物体运动时可以给每一个物体加一个编号再添加定时器。
    查看全部
    0 采集 收起 来源:JS多物体动画

    2016-05-22

  • 速度要记得取整!
    查看全部
    0 采集 收起 来源:JS缓冲动画

    2016-05-22

  • 改变透明度时是没有直接的属性,应该用一个变量来代替再赋值给那个透明度属性。
    查看全部
    0 采集 收起 来源:JS透明度动画

    2016-05-22

  • 防止鼠标事件多次触发,采用onmouseenter代替onmouseover
    查看全部
    0 采集 收起 来源:jQuery动画案例

    2016-05-22

  • 在这里会出现两个BUG。我都完美的解决了。不要像别人说的那么繁琐。第一个肯定是不能执行回调涵数。只要把flag=true放到定时器下面。 第个就是当鼠标移动的时候会出现多次执行涵数,只要鼠标小小的动一下就会执行动画。只要把onmouseover 改成onmouseenter就可以了。这样两个BUG就都解决了
    查看全部
    0 采集 收起 来源:JS动画案例

    2016-05-22

  • //最终封装的'完美移动框架' function startMove(obj,json,fn){ clearInterval(obj.timer); var flag;//标志所有运动是否到达目标值 obj.timer=setInterval(function(){ flag=true; //进入定时器时,现将flag设置为所有的属性都已达到目标值 for(var attr in json){ //取属性值 var curr=0; //判断是否为透明度 if(attr=='opacity'){ curr=Math.round(parseFloat(getStyle(obj,attr))*100); }else{ curr=parseInt(getStyle(obj,attr)); } //移动速度处理 var speed=0; speed=(json[attr]-curr)/10; speed=speed>0?Math.ceil(speed):Math.floor(speed); if(curr!=json[attr]){ flag=false; //假设有三个json的key/value值,这三个值中只要有一个没有达到目标值,flag就等于false. } if (attr=='opacity') { obj.style.filter='alpha(opacity:'+(curr+speed)+")"; obj.style.opacity=(curr+speed)/100; }else{ obj.style[attr]=curr+speed+'px'; } } if(flag){ clearInterval(obj.timer); if(fn){ fn(); } } },30); }
    查看全部
  • function startMove(obj,attr,iTarget,fn){clearInterval(obj.timer);obj.timer=setInterval(function(){var icur=0;if(attr=="opacity"){icur=Math.round(parseFloat(getStyle(obj,attr))*100)}else{icur=parseInt(getStyle(obj,attr))}var speed=(iTarget-icur)/8;speed=speed>0?Math.ceil(speed):Math.floor(speed);if(icur==iTarget){clearInterval(obj.timer);if(fn){fn()}}else{if(attr=="opacity"){obj.style.filter="alpha(opacity:"+(icur+speed)+")";obj.style.opacity=(icur+speed)/100}else{obj.style[attr]=icur+speed+"px"}}},30)}function getStyle(obj,attr){if(obj.currentStyle){return obj.currentStyle[attr]}else{return getComputedStyle(obj,false)[attr]}};
    查看全部
    0 采集 收起 来源:JS链式动画

    2018-03-22

  • Z-9
    就是flag没有定义在定时器内。因为flag如果定义在定期器外,flag只执行了一遍,当循环了一次后,flag变成了false就不会再改变了。flag一直都是false,就无法关闭定时器和执行下一个函数了。 结论:flag要定义在定期器内(旗子要立好!
    查看全部
  • 补充flag 3
    查看全部
  • 补充flag 2
    查看全部
  • 补充flag解决一个运动停止其他运动也跟着停止问题
    查看全部
  • 多运动一起 3—1
    查看全部
  • 多个运动一起 3
    查看全部

举报

0/150
提交
取消
课程须知
1.您至少已经具备JavaSript的知识。2.您已经具备一些开发经验。
老师告诉你能学到什么?
1.使用定时器实现简单动画。2.如何一步步封装库。2.培养编程的思想。

微信扫码,参与3人拼团

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

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