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

JS动画效果

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

    2016-12-08

  • alpha += speed; 即alpha = alpha + speed;
    查看全部
    0 采集 收起 来源:JS透明度动画

    2016-12-07

  • setInterval
    查看全部
    0 采集 收起 来源:JS速度动画

    2016-12-07

  • IE浏览器filter:alpha(opacity=30); 其他的opacity:0.3;
    查看全部
    0 采集 收起 来源:JS透明度动画

    2016-12-07

  • 同时执行两个定时器函数,后一个函数执行时会清除前一个函数的定时器, 所以实际效果是只执行后一个函数
    查看全部
    0 采集 收起 来源:同时运动

    2016-12-07

  • 设置一个回调参数,如果在执行第一个参数完成之后没有第二个要执行的,就结束动作,反之,则进行下一步
    查看全部
    0 采集 收起 来源:JS链式动画

    2016-12-07

  • 获取样式 getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr];//针对IE浏览器 } else{ return getComputeedStyle(obj,false)[attr];针对firefox浏览器 } }
    查看全部
    0 采集 收起 来源:获取样式

    2016-12-07

  • function startMove(obj, json, fn) { clearInterval(obj.timer); obj.timer = setInterval(function() { var flag = true;//标志所有运动是否到达目标值-----必须放在计时器里面(才能满足判断所有运动是否到达目标值) 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; } 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) { //alert('ok'); clearInterval(obj.timer); if(fn) { fu(); } } }, 30); } function getStyle(obj, attr) { if(obj.currentStyle) { //IE取样式 return obj.currentStyle[attr]; } else { return getComputedStyle(obj, false)[attr]; } }
    查看全部
  • getStyle parseFloat
    查看全部
  • 由于计算机不能很精确的存储浮点数,使用parseFloat时,有时会出现一堆小数。 解决:Math.round()四舍五入
    查看全部
  • 当多物体运动时候,所有的参数都不能公用,像timer,或者alpha
    查看全部
    0 采集 收起 来源:JS多物体动画

    2016-12-06

  • 修改行内样式
    查看全部
    0 采集 收起 来源:获取样式

    2016-12-05

  • 获取样式通过getStyle(obj,attribute)进行,这是一个封装好的函数
    查看全部
    0 采集 收起 来源:获取样式

    2016-12-05

  • JS中 obj.style.attr 只能获取行内样式 要获取非行内样式要通过obj.currentStyle[attr]或者getComputedStyle(obj,false)[attr]方法获取 可以封装为function getStyle(obj,attr){ if(obj.currentStyle){return obj.currentStyle[attr];}else{returngetComputedStyle(obj,false)[attr]}} obj.offsetWidth 返回值是数值所以不用parseInt();而obj.style.width获取的是像素值
    查看全部
    0 采集 收起 来源:获取样式

    2016-12-05

  • 取整原因:因为有除法,当offsetLeft值变的越来越小时,最后相除会使speed变成小数,从而offsetLeft与speed相加会有小数,又因显示器的最小像素单位是1px,所以浏览器默认向下取整(变小,即floor),将小数省略,小数省略后,最终的值会变小,从而导致程序无法进入if判断,进入死循环。 这一点可以用console.log(speed)可以验证,speed的log会一直输出,因为程序死循环了
    查看全部
    0 采集 收起 来源:JS缓冲动画

    2016-12-04

举报

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

微信扫码,参与3人拼团

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

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