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

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
  • 获取样式和转换字符取整 oDiv.style.width 当width:200px;等样式写在样式表中时,无法直接获得oDiv.style.xxx,(写在内联样式中才表示该元素拥有style属性才能得到oDiv.style.xxx),所以要获取样式,需要通过函数: function getStyle(obj,attr){ if (obj.currentStyle) { return obj.currentStyle[attr];//IE浏览器 } else{ return getComputedStyle(obj,false)[attr]; }; } parseInt(getStyle(obj,'width')) ———————— oDiv.style.width=oDiv.style.width-1+"px";是错误的,因为oDiv.style.width得到的是字符串(如200px),不能直接和-1+"px"连接起来成为新的值,需要用parseInt()方法: oDiv.style.width=parseInt(oDiv.style.width)-1+"px";
    查看全部
    0 采集 收起 来源:获取样式

    2018-03-22

  • 多物体运动 for循环来为每一个TagNameList[i]添加事件 并添加属性来区分各自的定时器(用于取消) 利用参数中的this来指定所选择的当前元素 多物体不要共用一个值,在对象上定义一个单独的属性保持值 存在多项共用一个值,并且这个值会发生改变时,最好单独给赋值,避免出现争用的情况。 <script> window.onload=function(){ var aLi=document.getElementsByTagName('li'); for(var i=0;i<aLi.length;i++){ // 给每一个li设置一个timer,才不会致使他们去抢timer aLi[i].timer=null; aLi[i].onmouseover=function(){ startMove(this,400); }; aLi[i].onmouseout=function(){ startMove(this,200) } } var oDivLi=document.getElementsByTagName('div'); for(var j=0;j<oDivLi.length;j++){ oDivLi[j].timer=null; oDivLi[j].alpha=30; oDivLi[j].onmouseover=function(){ startMove1(this,100); }; oDivLi[j].onmouseout=function(){ startMove1(this,30); } } };
    查看全部
    0 采集 收起 来源:JS多物体动画

    2018-03-22

  • 缓冲运动: 距离和速度成正比 :speed=(itarget-oDiv.offsetLeft)/10; alert(Math.floor(3.98))向下取整 alert(Math.ceil(3.22))向上取整 遇到这种运动涉及到数字的问题都要做一个判断,向上或者向下取整 // 从用两个函数实现,到用一个函数:两个有很多相同的部分,则相同部分可以共用,不同部分看有什么联系 // 从传入两个参数到一个参数:参数传递尽可能的少 <script> window.onload = function(){ var oDiv = document.getElementById("div1"); oDiv.onmouseover = function(){ startMove(0); }; oDiv.onmouseout = function(){ startMove(-200); }; }; var timer = null function startMove(offleft){ clearInterval(timer); var oDiv = document.getElementById("div1"); timer = setInterval(function(){ var speed = (offleft - oDiv.offsetLeft)/10; speed = speed > 0 ?Math.ceil(speed):Math.floor(speed); if(oDiv.offsetLeft == offleft ){ clearInterval(timer); } oDiv.style.left = oDiv.offsetLeft+speed+'px'; },30); } </script>
    查看全部
    0 采集 收起 来源:JS缓冲动画

    2018-03-22

  • 透明度: css定义(filter:alpha(opacity:30)) JS 改变: IE:style.filter=‘alpha(opactiy:’+值+')' 非IE .style.opactiy=值/100(火狐或者chrome关于透明度的满值1,IE是100) <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style> body,div{ margin:0; padding:0; } #div1{ width:200px; height:200px; background:red; filter:alpha(opacity:30); opacity:0.3; } </style> <script> window.onload = function(){ var oDiv =document.getElementById('div1'); oDiv.onmouseover=function(){ startMove(100); } oDiv.onmouseout=function(){ startMove(30); } } var timer = null; var alpha = 30; function startMove(iTarget){ var oDiv =document.getElementById('div1'); clearInterval(timer); timer=setInterval(function(){ var speed = 0; if(alpha>iTarget){ speed = -10; } else{ speed = 10; } if(alpha == iTarget){ clearInterval(timer) } else{ alpha+=speed; oDiv.style.opacity = alpha/100 } },30) } </script> </head> <body> <div id="div1"></div> </body> </html>
    查看全部
    0 采集 收起 来源:JS透明度动画

    2018-03-22

  • JS动画效果: 2-1:速度动画: 为防止动画累加,在每次触发动画事件时,应该先清除前一个没有完成的动画,即清除之前开启的定时器,然后这次再开启新的定时器。 命名的函数有多出相同时,使用封装函数的方法,尽可能的减少传入函数的参数 <style> *{margin:0;padding:0;} #div1{ width:200px; height:100px; background:#0F3; position:relative; left:-200px;} #div1 span{ display:block; height: 46px; position: absolute; right: -23px; width: 23px; text-align:center; background:#F00; } </style> <script> window.onload=function(){ var oid=document.getElementById('div1'); oid.onmouseover=function(){ startmove(0); } oid.onmouseout=function(){ startmove(-200); } } var timer=null; function startmove(offsetleft){ clearInterval(timer);//清除定时器 timer=setInterval(function(){ var speed=0; var oid=document.getElementById('div1'); // if(oid.offsetLeft==0){ if(oid.offsetLeft>offsetleft){ speed=-10;} else if(oid.offsetLeft<offsetleft){ speed=10; } else{ clearInterval(timer);} oid.style.left=oid.offsetLeft+speed+'px'; } ,30); } </script> </head> <body> <div id="div1"> <span>分享</span> </div>
    查看全部
    1 采集 收起 来源:JS速度动画

    2018-03-22

  • shewoqishuid 运动框架实现思路 1.速度(改变值left、right、width、height、opacity) 2.缓冲运动 3.多物体运动 4.任意值变化 5.链式运动 6.同时运动
    查看全部
  • jquery
    查看全部
    0 采集 收起 来源:jQuery动画案例

    2015-08-11

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

    2015-08-11

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

    2018-03-22

  • offsetLeft值可以获取当前的left值, 而offsetLeft属性不能被赋值,只能获取
    查看全部
    0 采集 收起 来源:JS速度动画

    2015-08-11

  • 运动框架实现思路 1.速度(改变值left、right、width、height、opacity) 2.缓冲运动 3.多物体运动 4.任意值变化 5.链式运动 6.同时运动
    查看全部
  • 有border/padding属性的div运动时不能用offsetX属性获取div的X,因为offsetX获取的是div盒子的属性 不是conten的属性!
    查看全部
  • offsetWidth取的是整个边框的宽度(包含padding和border宽)。而style.width则指的是content的width。为了获取content的width,不可以用offsetWidth, oDiv.style.width 当width:200px;等样式写在样式表中时,无法直接获得oDiv.style.xxx,(写在内联样式中才表示该元素拥有style属性才能得到oDiv.style.xxx),所以要获取样式,需要通过函数: function getStyle(obj,attr){ if (obj.currentStyle) { return obj.currentStyle[attr];//IE浏览器 } else{ return getComputedStyle(obj,false)[attr]; }; } parseInt(getStyle(obj,'width')) ———————— oDiv.style.width=oDiv.style.width-1+"px";是错误的,因为oDiv.style.width得到的是字符串(如200px),不能直接和-1+"px"连接起来成为新的值,需要用parseInt()方法: oDiv.style.width=parseInt(oDiv.style.width)-1+"px";
    查看全部
    0 采集 收起 来源:获取样式

    2018-03-22

  • JSON(利用其完成同时运动) json={name:key,name:key....}可以在一个括号内加入多对值 利用for in 遍历 :for(var i in JSON) i表示name,JSON[i]标示key(值) 可以将其理解为(属性:值)的组合
    查看全部

举报

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

微信扫码,参与3人拼团

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

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