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

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
  • overflow:hidden;//防止溢出 text-decoration:none;//去除li的小黑dian display:inline-block;//内联块 位置变化,原点-向上移动-固定中间位置-向上运动回到原点
    查看全部
    0 采集 收起 来源:JS动画案例

    2016-12-10

  • window.load = function(){ var oMove = document.getElementById("move"); var aList = document.getElementByTagName("a"); for(var i=0;i<aList.length;i++){ aList.onmouseover = function(){ var _this = this.getElementByTagName("i")[0]; startMove(_this,{top:-25,opacity:0},function(){ _this.top = 30 + "px"; startMove(_this,{top:20,opacity:100}); }); } } }
    查看全部
    0 采集 收起 来源:JS动画案例

    2018-03-22

  • 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]; } }
    查看全部
  • 同时执行两个定时器函数,后一个函数执行时会清除前一个函数的定时器, 所以实际效果是只执行后一个函数
    查看全部
    0 采集 收起 来源:同时运动

    2016-12-10

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

    2016-12-10

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

    2016-12-09

  • 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-09

  • for循环,为没一个li都绑定一个onmouseover事件
    查看全部
    0 采集 收起 来源:JS多物体动画

    2016-12-09

  • 避免重复多次启动计时器,可以在启动计时器前先清空计时器,这样就不会有重复的计时器使用了。
    查看全部
    0 采集 收起 来源:JS速度动画

    2016-12-09

  • 运动模式: 1. 速度 => 改变left、right、width、height、opacity 2. 缓冲运动 3. 多物体运动 4. 任意值变化 5. 链式运动 6. 同时运动
    查看全部
  • Math.round();四舍五入取整
    查看全部
  • obj.timer=setInterval(function() 设置定时器的同时给obj.timer赋值了。 全局增加timer=null,定义一个变量,每次执行前变量为空值应该也能起到清除定时器的作用
    查看全部
    0 采集 收起 来源:JS多物体动画

    2016-12-08

  • 由于数值设置的原因,div移动到一定px后,进行相减再除20的运算后会出现小数,比如0.75,比如这时div移动到了290,程序里写到div的left=oDiv.offsetLeft+speed+'px',那么div的left就是290.75px,而浏览器是不允许出现小数的,会把0.75去掉,那么div的left就成了290,下次执行时div的left是290,算出来速度还是0.75,浏览器又省略了小数,结果就是div停在了290px,到不了目标点300。
    查看全部
    0 采集 收起 来源:JS缓冲动画

    2016-12-08

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

    2016-12-08

举报

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

微信扫码,参与3人拼团

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

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