运动基础html
简单案例演示(让div运动):框架
1 <script> 2 var timer=null; 3 4 function startMove(){ 5 var oDiv=document.getElementById('div'); 6 7 clearInterval(timer); 8 //每次startMove()事件触发,关闭以前的定时器(避免屡次触发,调用屡次定时器) 9 10 timer=setInterval(function(){ //开启定时器,让div运动起来 11 if(oDiv.offsetLeft>=400){ 12 clearInterval(timer); //让div在固定位置中止运动 13 } 14 else{ 15 oDiv.style.left=oDiv.offsetLeft+10+'px'; 16 //让div以10px距离的速度进行运动,即改变div左边距到窗口的长度 17 } 18 },30); 19 } 20 </script>
运动框架:函数
每一个运动的事物都必须遵照运动框架这个规则!!!ui
1>在开始运动时,关闭已有的定时器spa
2>把运动和中止隔开(if/else)code
以上的简单代码中,第7行代码中,遵循了运动框架第1条;第11-15行代码中,遵循了运动框架第二条htm
运动框架实例blog
案例一:“分享到”侧边栏的案例seo
实现效果以下:事件
代码以下:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>Document</title> 8 <style> 9 body{ 10 margin: 0; 11 padding: 0; 12 } 13 #div{ 14 width: 100px; 15 height: 200px; 16 background: #cccccc; 17 position: absolute; 18 left: -100px; 19 } 20 #div span{ 21 width: 20px; 22 height: 60px; 23 line-height: 20px; 24 text-align: center; 25 background: yellow; 26 position:absolute; 27 left: 100px; 28 top: 50px; 29 } 30 </style> 31 <script> 32 window.onload=function(){ 33 var oDiv=document.getElementById('div'); 34 oDiv.onmousemove=function(){ 35 startMove(); 36 } 37 oDiv.onmouseout=function(){ 38 stopMove(); 39 } 40 } 41 42 var timer=null; 43 function startMove(){ 44 var oDiv=document.getElementById('div'); 45 clearInterval(timer); 46 timer=setInterval(function(){ 47 if(oDiv.offsetLeft==0){ 48 clearInterval(timer); 49 } 50 else{ 51 oDiv.style.left=oDiv.offsetLeft+10+'px'; 52 } 53 },30) 54 } 55 function stopMove(){ 56 var oDiv=document.getElementById('div'); 57 clearInterval(timer); 58 timer=setInterval(function(){ 59 if(oDiv.offsetLeft==-100){ 60 clearInterval(timer); 61 } 62 else{ 63 oDiv.style.left=oDiv.offsetLeft-10+'px'; 64 } 65 },30) 66 } 67 </script> 68 </head> 69 <body> 70 <div id="div"> 71 <span id="span">分享到</span> 72 </div> 73 </body> 74 </html>
以上js代码有不少重复的地方,下面让它简化一下:(整合成一个方法便可)
1 <script> 2 window.onload=function(){ 3 var oDiv=document.getElementById('div'); 4 oDiv.onmousemove=function(){ 5 Move(0); //当iTarget:目标位置为0时 6 } 7 oDiv.onmouseout=function(){ 8 Move(-100); //当iTarget:目标位置为-100时 9 } 10 } 11 12 var timer=null; 13 function Move(iTarget){ //传参数,iTarget表示目标位置 14 var oDiv=document.getElementById('div'); 15 clearInterval(timer); 16 timer=setInterval(function(){ 17 var iSpeed=0; 18 if(oDiv.offsetLeft<iTarget){ //作判断 【经过目标点left的距离计算速度的值】 19 iSpeed=10; //若当前div左边距到界面上的长度<目标位置,则速度为正 20 } 21 else{ 22 iSpeed=-10; //反之,则速度为负 23 } 24 25 if(oDiv.offsetLeft==iTarget){ 26 clearInterval(timer); 27 } 28 else{ 29 oDiv.style.left=oDiv.offsetLeft+iSpeed+'px'; 30 } 31 },30) 32 } 33 </script>
案例二:“淡入淡出的图片”案例
实现效果以下:
代码以下:(简化写法【即传入一个参数、调用一个函数便可】)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>Document</title> 8 <style> 9 #img{ 10 width: 50%; 11 opacity: 0.3; 12 } 13 </style> 14 <script> 15 window.onload=function(){ 16 var oImg=document.getElementById('img'); 17 oImg.onmouseover=function(){ 18 change(100); //当鼠标移入图片,设置它的“透明度”最后值为100 19 } 20 oImg.onmouseout=function(){ 21 change(30); //当鼠标移出图片,设置它的“透明度”最后值为30 22 } 23 } 24 25 var timer=null; 26 var opacity=30; 27 //额外设置变量表示“透明度”的值,后面经过修改这个值来让图片改变“透明度” 28 //由于获取不到图片的透明值,因此只能用变量来代替(不像offsetWidth同样能够获取宽度) 29 30 function change(iTarget){ //传入一个参数,用于表示“透明度”的最后值 31 var oImg=document.getElementById('img'); 32 33 clearInterval(timer); //相当重要的一步!!!!要记得清除原有的计时器 34 timer=setInterval(function(){ 35 var iSpeed=0; 36 if(opacity<iTarget){ //作判断 【经过目标“透明度”计算速度的值】 37 iSpeed=6; //若当前图片“透明度”<目标“透明度”,则速度为正 38 } 39 else{ 40 iSpeed=-6; //反之,则速度为负 41 } 42 43 if(opacity==iTarget){ 44 clearInterval(timer); 45 } 46 else{ 47 opacity+=iSpeed; 48 if(opacity>=100){ 49 //当改变速度iSpeed的值时,若最后加在一块儿的“透明度”数值大于等于100时,直接设置“透明度”为100便可 50 opacity=100; 51 } 52 else if(opacity<=30){ 53 opacity=30; 54 } 55 oImg.style.opacity=opacity/100; 56 //由于opacity的值为0-1之间的值,因此取值要除以100 57 } 58 },30) 59 } 60 </script> 61 </head> 62 <body> 63 <img id="img" src="PPT.jpg" alt="PPT"> 64 </body> 65 </html>