web前端之JavaScript DOM编程艺术之用JavaScript实现基础动画效果
2016-11-26 17:05
1051 查看
web前端之JavaScript DOM编程艺术之用JavaScript实现基础动画效果
1. 动画基础知识
1.位置<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> function positionMessage(){ if(!document.getElementById) return false; if(!document.getElementById("message")) return false; var elem=document.getElementById("message"); elem.style.position="absolute"; elem.style.left="50px"; elem.style.top="100px"; } function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload != 'function'){ window.onload=func; }else{ window.onload=function(){ oldonload(); func(); } } } function moveMessage(){ if(!document.getElementById) return false; if(!document.getElementById("message")) return false; var elem=document.getElementById("message"); elem.style.left="200px"; } addLoadEvent(positionMessage); addLoadEvent(moveMessage); </script> </head> <body> <p id="message">Where!</p> </body> </html>
改变moveMessage里面相应的参数就能进行相应的改变。
2.时间
JavaScript函数setTimeout能够让某个函数在经过一段预定的时间之后才开始执行相应的函数。这个函数带有两个参数:第一个参数往往是一个字符串,其内容是将要执行的那个函数的名字;第二个参数是一个数值,它以毫秒为单位设定了需要经过多长时间后才开始执行第一个参数所给的函数:setTimeout(“function”,interval)
在绝大部分,把这个函数调用赋值给一个变量将是一个好主意:
variable=setTimeout(“function”,interval);
可以使用clearTimeout(variable)来取消某个正在排队等待执行的函数。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> function positionMessage(){ if(!document.getElementById) return false; if(!document.getElementById("message")) return false; var elem=document.getElementById("message"); elem.style.position="absolute"; elem.style.left="50px"; elem.style.top="100px"; movement=setTimeout("moveMessage()",1000); } function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload != 'function'){ window.onload=func; }else{ window.onload=function(){ oldonload(); func(); } } } function moveMessage(){ if(!document.getElementById) return false; if(!document.getElementById("message")) return false; var elem=document.getElementById("message"); elem.style.left="200px"; } addLoadEvent(positionMessage); </script> </head> <body> <p id="message">Where!</p> </body> </html>
这样经过1s之后就会动态地改变了。当然在这段等待的时间内使用clearTimeout(movement);就可以取消当前动画操作
3.时间递增量
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> function positionMessage(){ if(!document.getElementById) return false; if(!document.getElementById("message")) return false; var elem=document.getElementById("message"); elem.style.position="absolute"; elem.style.left="50px"; elem.style.top="100px"; movement=setTimeout("moveMessage()",1000); } function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload != 'function'){ window.onload=func; }else{ window.onload=function(){ oldonload(); func(); } } } function moveMessage(){ if(!document.getElementById) return false; if(!document.getElementById("message")) return false; var elem=document.getElementById("message"); var xpos=parseInt(elem.style.left); var ypos=parseInt(elem.style.top); if(xpos == 200 && ypos == 100){ return true; } if(xpos < 200){ xpos++; } if(xpos > 200){ xpos--; } if(ypos < 100){ ypos++; } if(ypos > 100){ ypos--; } elem.style.left=xpos+"px"; elem.style.top=ypos+"px"; movement=setTimeout("moveMessage()",10); } addLoadEvent(positionMessage); </script> </head> <body> <p id="message">Where!</p> </body> </html>
4.抽象
把这些常数改变为变量,这个函数的灵活性和适用性也会大大地提高。通过对moveMessage函数进行抽象,可以使他变得更为通用。
4.1 创建moveElement函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> function positionMessage(){ if(!document.getElementById) return false; if(!document.getElementById("message")) return false; var elem=document.getElementById("message"); elem.style.position="absolute"; elem.style.left="50px"; elem.style.top="100px"; moveElement("message",200,100,20); } addLoadEvent(positionMessage); function addLoadEvent(func){ var oldonload=window.onload; if(typeof window.onload != 'function'){ window.onload=func; }else{ window.onload=function(){ oldonload(); func(); } } } function moveElement(elementID,final_x,final_y,interval){ if(!document.getElementById) return false; if(!document.getElementById(elementID)) return false; var elem=document.getElementById(elementID); var xpos=parseInt(elem.style.left); var ypos=parseInt(elem.style.top); if(xpos ==final_x && ypos==final_y){ return true; } if(xpos < final_x){ xpos++; } if(xpos > final_x){ xpos--; } if(ypos < final_y){ ypos++; } if(ypos > final_y){ ypos--; } elem.style.left=xpos+"px"; elem.style.top=ypos+"px"; var repeat="moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")" movement=setTimeout(repeat,interval); } </script> </head> <body> <p id="message">Where!</p> </body> </html>
通过修改“moveElement(“message”,200,100,20);”里面相应的值,可以做出各种不同的效果
相关文章推荐
- web前端之JavaScript DOM编程艺术之用JavaScript实现动画效果拓展(预览图片)
- 【web前端】JavaScript实现图片幻灯片滚动播放动画效果
- web前端教程:使用javascript实现多级联动效果
- web前端之用JavaScript实现图片剪切效果(一)
- web前端 javascript 实现瀑布流页面布局效果的框架 v1.0.1
- WEB前端-HTML-JavaScript实现内容滚动刷新的效果
- 用javascript实现基础动画效果
- WEB前端开发学习----4.用JavaScript实现网页游戏的移动效果
- 用javascript实现以个动画效果(可以上下左右的移动)
- 前端之美:9个很酷的基于 CSS3 和 JavaScript 实现的效果
- javascript实现DIV层滑动弹出动画效果
- web前端学习笔记---实现雪花飘落的效果
- WEB前端开发学习----11. JQuery 实现简单的拖拽效果
- 用javascript实现动画效果
- HTML中如何使用JavaScript实现DOM的动画效果
- WEB前端开发学习----12. JavaScript 选项卡效果
- 用JavaScript实现动画效果的方法
- 优秀前端教程:实现图片的形状遮罩和动画放大效果
- JavaScript实现新浪微博文字放大显示动画效果
- 中文前端UI框架Kit(六)javascript动画代码实现原理和一些小技巧