JavaScript中的匀速运动和变速(缓冲)运动详细介绍


Posted in Javascript onNovember 11, 2012

一个div的运动其实就是它与浏览器边框的距离在变动。如果他变化的速率一定,那就是匀速运动;如果变化的速率不一定,那么就是变速运动。当,变化率与聚离浏览器边框的距离成比例的话,那么就可以说是div在做缓冲运动。
其实,很简单,就是用一个定时器(timer),每隔一段时间来改变div聚浏览器边框的距离。

比如匀速运动:

进入定时器:(每隔30ms做)
if(是否到达终点)
{ 停止定时器}
else do{ 改变距离}

改变距离的方法决定是匀速还是变速(缓冲)运动。

匀速的比如:

var timer=null; 
function startMove() 
{ var oDiv=document.getElementById('div1'); 
clearInterval(timer); 
timer=setInterval(function () { 
var iSpeed=1; 
if(oDiv.offsetLeft>=300) 
{ 
clearInterval(timer); 
} 
else 
{ 
oDiv.style.left=oDiv.offsetLeft+iSpeed+'px'; 
} 
},30); 
};

缓冲运动:

var timer=null; 
function startMove() 
{ 
var iTarget=300; 
var oDiv=document.getElementById('div1'); 
clearInterval(timer); 
timer=setInterval(function () { 
var iSpeed=(iTarget-oDiv.offsetLeft)/8; 
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); 
iSpeed=Math.ceil(iSpeed); 
if(oDiv.offsetLeft==iTarget) 
{ 
clearInterval(timer); 
} 
else 
{ 
oDiv.style.left=oDiv.offsetLeft+iSpeed+'px'; 
} 
document.title=oDiv.style.left+' '+iSpeed; 
},30); 
};

这样,一个运动框架就写好了!原理很简单,不过还有待完善。慢慢来吧!
Javascript 相关文章推荐
javascript 跳转代码集合
Dec 03 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
Javascript对象字面量的理解
Jun 22 Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 Javascript
vue登录路由验证的实现
Dec 13 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 Javascript
微信小程序使用map组件实现路线规划功能示例
Jan 22 Javascript
Layui table field初始化加载时进行隐藏的方法
Sep 19 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
jQuery语法总结和注意事项小结
Nov 11 #Javascript
javascript继承之为什么要继承
Nov 10 #Javascript
jquery表单验证使用插件formValidator
Nov 10 #Javascript
js 判断checkbox是否选中的操作方法
Nov 09 #Javascript
JS的replace方法详细介绍
Nov 09 #Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 #Javascript
javascript模拟select,jselect的方法实现
Nov 08 #Javascript
You might like
PHP生成UTF8文件的方法
2010/05/15 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
php 实现进制相互转换
2016/04/07 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python中Threading用法详解
2017/12/27 Python
python elasticsearch环境搭建详解
2019/09/02 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
美国批发供应商:Kole Imports
2019/04/10 全球购物
房地产开发计划书
2014/01/10 职场文书
初一生物教学反思
2014/01/18 职场文书
商超业务员岗位职责
2014/03/12 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
小学运动会宣传稿
2015/07/23 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
Python中for后接else的语法使用
2021/05/18 Python
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
Python&Matlab实现樱花的绘制
2022/04/07 Python
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android