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

JS动画效果

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

    2017-02-19

  • 透明度属性
    查看全部
    0 采集 收起 来源:JS透明度动画

    2017-02-18

  • ...
    查看全部
    0 采集 收起 来源:获取样式

    2017-02-12

  • ...
    查看全部
    0 采集 收起 来源:JS缓冲动画

    2017-02-12

  • clearInterval(timer)清理定时器
    查看全部
    0 采集 收起 来源:JS速度动画

    2017-02-09

  • offsetLeft当前左边距值
    查看全部
    0 采集 收起 来源:JS速度动画

    2017-02-09

  • IE:currentStyle; firefox:getComputedStyle;
    查看全部
    0 采集 收起 来源:获取样式

    2017-02-08

  • 避免重复多次启动计时器,可以在启动计时器前先清空计时器,这样就不会有重复的计时器使用了。 尽量减少参数,能写进函数的就写进函数
    查看全部
    1 采集 收起 来源:JS速度动画

    2017-02-05

  • filter是针对IE做兼容的,opacity是对主流高版本浏览器的,如火狐,谷歌
    查看全部
    0 采集 收起 来源:JS透明度动画

    2017-02-04

  • <!-- 使用js实现透明度运动而不采用直接设置css的style.opacity属性来改变透明度,这是因为css的透明度的设置是一步到位,瞬时完成的,而使用js可以实现渐隐特效 --> opacity是不透明度,opacity为0时表示不透明度是0也就是完全透明(效果等同于css的隐藏) filter: alpha(opacity:30); /*IE浏览器专用,opacity属性值为0~100*/ opacity:0.3; /*所有主流浏览器都支持opacity属性。. 注意:IE8和早期版本支持另一种过滤器属性。像:filter:Alpha(opacity=50),而IE8版本之前的opacity属性值是0~1*/ 【没有直接的属性可以改变透明度,需要定义一个alpha】
    查看全部
    0 采集 收起 来源:JS透明度动画

    2018-03-22

  • 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获取的是像素值
    查看全部
    1 采集 收起 来源:获取样式

    2017-01-27

  • 1.速度(left\right\width\height\opacity)
    查看全部
  • 缓冲运动中:向上取整Math.ceil(),向下取整Math.floor() 由于数值设置的原因,div移动到一定px后,进行相减再除20的运算后会出现小数,比如0.75,比如这时div移动到了290,程序里写到div的left=oDiv.offsetLeft+speed+'px',那么div的left就是290.75px,此时speed速度为0.75。而浏览器是不允许出现小数的,会把0.75去掉,那么就速度为0 不动了。那么div的left就变成了290,下次执行时div的left是290,算出来速度还是0.75,浏览器又省略了小数,结果就是div停在了290px,到不了目标点300。 所以 向右移动 速度为正 就将变成小数的速度 向上取整 为1 向左移动 速度为负 就将变成负小数的速度向下取整 取整原因:因为有除法,当offsetLeft值变的越来越小时,最后相除会使speed变成小数,从而offsetLeft与speed相加会有小数,又因显示器的最小像素单位是1px,所以浏览器默认向下取整(变小,即floor),将小数省略,小数省略后,最终的值会变小,从而导致程序无法进入if判断,进入死循环。 这一点可以用console.log(speed)可以验证,speed的log会一直输出,因为程序死循环了 Math.floor()向取整; Math.ceil()向上取整; Math.round()四舍五入; var speed = speed>0?Math.ceil(speed):Math.floor(speed); 如果(目标值-当前值)/10 不能整除的话。运动到最后,是1~9之间的数字来除以10,结果是个小于1的小数,如果用Math.floor(speed)向下取整,那就是0,speed=0,意味着不再发生变化。也就是说,当速度大于0的时候,如果用Math.floor(speed),最后不到10个像素的时候,就不会动了。所以要用Math.ceil向上取整。同理,当速度<0时,要用Math.ceil()取整。
    查看全部
    1 采集 收起 来源:JS缓冲动画

    2018-03-22

  • 只要是多物体,定时器和透明度都不能共用。
    查看全部
    0 采集 收起 来源:JS多物体动画

    2017-01-21

  • 缓冲运动中:向上取整Math.ceil(),向下取整Math.floor()
    查看全部
    0 采集 收起 来源:JS缓冲动画

    2017-01-20

举报

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

微信扫码,参与3人拼团

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

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