缓冲运动就是运动的速度与时间或者距离有关联,不是一般的匀速运动

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>缓冲动画</title>
<style>
.animation{
background-color: green;
height: 100px;
width: 100px;
left: 0px;
top: 0px;
position: absolute;
}
</style>
</head>
<body>
<div id="test" class="animation">animation</div>
</body>
<script type="text/javascript">
window.onload = function(){
var ele = document.getElementById("test"),
timer = null ,
WINDOW_WIDTH = window.innerWidth - 100,
target = WINDOW_WIDTH;
ele.onmouseover = function(){
startAnimation();
} function startAnimation(){
clearInterval(timer);
var _ele = document.getElementById("test"); timer = setInterval(function(){
var _left = _ele.offsetLeft,
_speed = (target - _left)>0?Math.ceil((target - _left)/200):Math.floor((target - _left)/200); if (_ele.offsetLeft == target){
if(WINDOW_WIDTH == target){
target = 0;
}else{
target = WINDOW_WIDTH;
} clearInterval(timer);
};
_ele.style.left = _ele.offsetLeft+ _speed +'px';
},1)
} }
</script>
</html>

  

  大家可以看见

_speed = Math.ceil((target - _left)/200);

这里的速度除以了一个整数200,那么我们就要往上取整,因为不往上,可能_speed当为0的时候,其实运动物体还没有到达最终的目的,如果200-199 = 1 还差1像素,1像素/200 = 0.005 那么只有往上取值(Math.ceil()),如果往下取值(Math.floor),那么物体悠久不可能到达200像素这个距离。

那什么情况使用floor呢?当_speed相减的时候就用_speed = Math.floor((target - _left)/200),因为可能这个物体网往回走了,那么就用Math.floor(), 比如 0-1 = -1, -1/200 = -0.005 ,那么我们只能取-1,不然物体永久回不到原点。

最新文章

  1. getStyle(obj, attr)兼容获取css
  2. win7任务栏只显示日期不显示年月日
  3. Android IOS WebRTC 音视频开发总结(七二)-- 看到Google Duo,你想到了什么?
  4. Tomcat启动时自动加载一个类
  5. 《Linux命令行与shell脚本编程大全》 第二十三章 学习笔记
  6. 20145102 《Java程序设计》第5周学习总结
  7. iOS利用单例实现不同界面间的数据传输
  8. InvocationTargetException
  9. windows下使用cxfreeze打包python3程序
  10. android 背景透明度渐变动画
  11. 在DataGrid中实现Button Command
  12. XML的几种转换
  13. ros6.0的包转发图解
  14. c++读入优化
  15. php的缓冲/缓存 js对象 ,php编程的深入思考-1
  16. 【Oracle】Oracle中使用转义字符
  17. css实现栏目两边斜线的效果
  18. MySql EF6 DBFirst 向导无法生成 edmx 解决方法(同:您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库提供程序)
  19. Java 集合基础知识 List/Set/Map
  20. java字符串解析

热门文章

  1. JArray数组每个JObject对象添加一个键值对
  2. 新手用git
  3. Android导航栏菜单强制转换
  4. 锁相关知识 &amp; mutex怎么实现的 &amp; spinlock怎么用的 &amp; 怎样避免死锁 &amp; 内核同步机制 &amp; 读写锁
  5. mybatis动态切换数据源
  6. 三代PacBio reads纠错 - 专题
  7. css 表格
  8. tensorflow版的bvlc模型
  9. PHP之PhpDocument的使用
  10. JS添加父节点的方法。