js动画基本原理和简单封装
2016-11-20 17:41
363 查看
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> div { width: 100px; height: 100px; background-color: pink; position: absolute; } </style> </head> <body> <script> //-------------------------动画的基本原理----------------------- var btn = document.getElementsByTagName("button")[0]; var div = document.getElementsByTagName("div")[0]; //闪动 // btn.onclick = function () { // div.style.left = "500px"; // } //匀速运动 btn.onclick = function () { //定时器,每隔一定的时间向右走一些 setInterval(function () { console.log(parseInt(div.style.left)); // div.style.left = parseInt(div.style.left)+10+"px"; //NaN不能用 //动画原理: 盒子未来的位置 = 盒子现在的位置 + 步长; //style.left赋值,用offsetLeft获取值。 //style.left获取值不方便,获取行内式,如果没有事“”;容易出现NaN; //offsetLeft获取值特别方便,而且是现成number方便计算。因为他是只读的不能赋值。 div.style.left = div.offsetLeft + 10 + "px"; },300); } //------------------------------动画的最终封装------------------ function animate(ele,target){ //要用定时器,先清除定时器 //一个盒子只能有一个定时器,这样儿的话,不会和其他盒子出现定时器冲突 //而定时器本身讲成为盒子的一个属性 clearInterval(ele.timer); //我们要求盒子既能向前又能向后,那么我们的步长就得有正有负 //目标值如果大于当前值取正,目标值如果小于当前值取负 var speed = target>ele.offsetLeft?10:-10; ele.timer = setInterval(function () { //在执行之前就获取当前值和目标值之差 var val = target - ele.offsetLeft; ele.style.left = ele.offsetLeft + speed + "px"; //目标值和当前值只差如果小于步长,那么就不能在前进了 //因为步长有正有负,所有转换成绝对值来比较 if(Math.abs(val)<Math.abs(speed)){ ele.style.left = target + "px"; clearInterval(ele.timer); } },30) } </script> </body> </html>
相关文章推荐
- JS简单动画封装
- js-匀速/缓动动画-简单封装
- JS简单动画封装浅析
- JS特效之简单动画封装
- 004_JS封装简单动画函数
- js学习心得_一个简单的动画库封装tween.js
- js 匀速/缓动动画 简单封装
- JS简单动画封装浅析
- 【iOS开发-50】利用创建新的类实现代码封装,从而不知不觉实践一个简单的MVC实验,附带个动画
- js简单封装能向回调函数传入参数的事件处理函数
- js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
- js一百零一夜之第三夜javascript 简单动画实现
- js动画(animate)简单引擎代码示例
- JavaScript面向对象编程(12)对js进行简单封装
- 一个简单的js动画
- js动画脚本编写原理 最简单的那种
- js 函数简单封装
- Textillate.js – 实现动感的 CSS3 文本动画的简单插件
- 纯css3无js实现的Android Logo(有简单动画)
- 对tabtrip的简单封装 js的querystring Request.QueryString