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

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
  • //mouseenter不带on
    查看全部
    0 采集 收起 来源:jQuery动画案例

    2016-03-29

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

    2016-03-29

  • overflow:hidden;//防止溢出 text-decoration:none;//去除li的小黑dian display:inline-block;//内联块
    查看全部
    0 采集 收起 来源:JS动画案例

    2016-03-29

  • <a>的href具有将鼠标变点击手型的功能 鼠标事件要使用this传递参数 使用层层递进,不要一下就访问到子元素<i>
    查看全部
    0 采集 收起 来源:JS动画案例

    2018-03-22

  • 内部JS和外部JS的方法 <script src="js/move.js"> </script> <script> window.onload=function(){ var move=document.getElementById("move"); var oa=move.getElementsByTagName("a"); for(var i=0,len=oa.length;i<len;i++){ oa[i].onmouseenter=function(){ var _this=this.getElementsByTagName('i')[0];//这里得使用this,在鼠标运动中只能使用this,内函数无法识别oa[i] startMove(_this,{top:-10,opacity:0},function(){ _this.style.top=10+'px'; startMove(_this,{top:5,opacity:100}); });} } } </script>
    查看全部
    0 采集 收起 来源:JS动画案例

    2018-03-22

  • <!doctype html> <html> <head> <meta charset="UTF-8"> <title>仅使用opacity来实现透明度问题,请大神指教会不会产生兼容性问题</title> <style> *{margin:0;padding:0} #odiv{ width:200px; height:200px; left:0; top:0; position:relative; opacity:0.1; background:red; /*filter:alpha(opacity:30);*/ opacity:0.3; } </style> <script> window.onload=function(){ var odiv=document.getElementById('odiv'); odiv.onmouseover=function(){ change(1); } odiv.onmouseout=function(){ change(0.1); } }    var timer=null; var opacit=0.3; function change(target){ var odiv=document.getElementById('odiv'); clearInterval(timer); var speed=0.1; timer=setInterval(function(){ if(opacit>target){ speed=-0.1; }else{ speed=0.1; } if(opacit==target){ clearInterval(timer); } else{ opacit=opacit+speed; odiv.style.opacity=opacit; } },50); } </script> </head> <body> <div id="odiv"></div> </body> </html>
    查看全部
    0 采集 收起 来源:JS透明度动画

    2018-03-22

  • 达到目标速度变为0,所有的为0即可停止定时器。已完成的停止 未完成的继续,不会过运动
    查看全部
  • //最终封装的'完美移动框架' function startMove(obj,json,fn){ var flag=true;//标志所有运动是否到达目标值 clearInterval(obj.timer); obj.timer=setInterval(function(){ 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){ 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]; } }
    查看全部
  • json名称为字符串
    查看全部
  • 接上 for(var attr in json){ //取当前值 var icur = 0; if(attr == 'opacity'){ icur = Math.round(parseFloat(getStyle(obj,attr))*100);} else { icur = parseInt(getStyle(obj,attr));} //求速度 var speed = (json[attr]-icur)/8; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if(icur != json[attr]){ flag = false;} if(attr == 'opacity'){ obj.style.filter = 'alpha(opacity:'+(icur+speed)+')'; //IE obj.style.opacity = (icur+speed)/100;} else { obj.style[attr] =icur + speed +'px';} } if(flag == true) {//if(flag == true) {clearInterval(obj.timer);if(fn){return fn();}}//应该放在var attr in json 的同级,不能包含在里面 clearInterval(obj.timer); if(fn){ return fn();} } },30); }
    查看全部
  • 接上 //json = {attr1:iTarget1,attr2:iTarget2} function startMove(obj,json,fn){ clearInterval(obj.timer); //标志所有运动是否到达目标值 obj.timer = setInterval(function(){ var flag = true;/*//var flag=ture;//应当放在setInterval里,var attr in json的前面,,当for(var attr in json)遍历执行一遍后,即无运动了,会自动跳出遍历,定时器再次设定flag=true,这时候就可以终止定时器了,与单片机不同,单片机一次只能执行一条语句,这里使用遍历可以同时执行多个语句*/
    查看全部
  • window.onload = function(){ var Li1=document.getElementById('Li1'); Li1.onmousemove=function(){ startMove(Li1,{"opacity":100,"width":400}, function(){startMove(Li1,{"opacity":80,"width":500})}); } Li1.onmouseout=function(){ startMove(Li1,{opacity:30,width:200}); } } function getStyle(obj,attr){ if(obj.currentStyle){ //IE return obj.currentStyle[attr]; } else { return getComputedStyle(obj,false)[attr]; } }
    查看全部
  • if(flag == true) {clearInterval(obj.timer);if(fn){return fn();}}//应该放在var attr in json 的同级,不能包含在里面 var flag=ture;//应当放在setInterval里,var attr in json的前面, 缺点是for(var attr in json)无终止条件
    查看全部
  • for...in循环用来遍历一个对象的全部属性。
    查看全部
  • obj.style.width 是获取的content区的宽度,并且只能获取行内样式;而offsetWidth获取的是盒子宽度。
    查看全部
    0 采集 收起 来源:获取样式

    2016-03-28

举报

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

微信扫码,参与3人拼团

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

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