JavaScript缓冲运动实现方法(2则示例)


Posted in Javascript onJanuary 08, 2016

本文实例讲述了JavaScript缓冲运动实现方法。分享给大家供大家参考,具体如下:

实现原理:(目标距离-当前距离) / 基数 = 速度(运动距离越大速度越小,运动距离和速度成反比)

(500 - oDiv.offsetLeft) / 7 = iSpeed;

需要注意:当计算出来的速度有小数时需要取整;

(500 - oDiv.offsetLeft) / 7 = iSpeed; iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);

例子1:滑块缓冲运动

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>缓冲运动</title>
<style>
#div1{ width:100px; height:100px; background:red; position:absolute; top:50px; left:0;}
span{ width:1px; height:300px; background:black; position:absolute; left:300px; top:0; display:block;}
</style>
<script>
window.onload = function()
{
 var oBtn = document.getElementById('btn1');
 var oDiv = document.getElementById('div1');
 oBtn.onclick = function()
 {
  startMove(oDiv, 300);
 };
};
var timer = null;
function startMove(obj, iTarget)
{
 clearInterval(timer);
 timer = setInterval(function(){
  var iSpeed = (iTarget - obj.offsetLeft)/8;
  iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
  if(iTarget==obj.offsetLeft){
   clearInterval(timer);
  }else{
   obj.style.left = obj.offsetLeft + iSpeed + 'px';
  }
 }, 30);
}
</script>
</head>
<body>
<input id="btn1" type="button" value="移动" />
<div id="div1"></div>
<span></span>
</body>
</html>

例子2:侧边栏滑动

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>侧边栏滑动</title>
<style>
#div1{ width:100px; height:100px; background:red; position:absolute; right:0; top:0;}
</style>
<script>
window.onload = window.onscroll = function()
{
 var oDiv = document.getElementById('div1');
 var iScrollTop = document.documentElement.scrollTop || document.body.scrollTop;
 var clientHeight = document.documentElement.clientHeight;
 var iH = (clientHeight - oDiv.offsetHeight)/2 + iScrollTop;
 //oDiv.style.top = iH + 'px';
 startMove(oDiv, parseInt(iH));
};
var timer = null;
function startMove(obj, iTarget)
{
 clearInterval(timer);
 timer = setInterval(function(){
  var iSpeed = (iTarget - obj.offsetTop) / 8;
  iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
  if(obj.offsetTop == iTarget){
   clearInterval(timer);
  }else{
   obj.style.top = obj.offsetTop + iSpeed + 'px';
  }
 }, 30);
}
</script>
</head>
<body style="height:2000px;">
<div id="div1"></div>
</body>
</html>

更多关于JavaScript运动效果相关内容可查看本站专题:《JavaScript运动效果与技巧汇总》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于JQuery.timer插件实现一个计时器
Apr 25 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
Oct 16 Javascript
查找页面中所有类为test的结点的方法
Mar 28 Javascript
使用Node.js处理前端代码文件的编码问题
Feb 16 Javascript
在IE8上JS实现combobox支持拼音检索功能
May 23 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
Jan 22 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
JS返回顶部实例代码
Aug 09 Javascript
vue的一个分页组件的示例代码
Dec 25 Javascript
详解webpack 最简打包结果分析
Feb 20 Javascript
vue实现计算器功能
Feb 22 Javascript
微信小程序实现canvas分享朋友圈海报
Jun 21 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
Jan 08 #Javascript
基于javascript实现右下角浮动广告效果
Jan 08 #Javascript
jQuery数据类型小结(14个)
Jan 08 #Javascript
JS运动相关知识点小结(附弹性运动示例)
Jan 08 #Javascript
基于jquery实现图片上传本地预览功能
Jan 08 #Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 #Javascript
jQuery实现本地预览上传图片功能
Jan 08 #Javascript
You might like
PHP生成plist数据的方法
2015/06/16 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
smarty模板数学运算示例
2016/12/11 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
小饰品店的创业计划书范文
2013/12/28 职场文书
代理班主任的自我评价
2014/02/04 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
《将心比心》教学反思
2014/04/08 职场文书
C++程序员求职信
2014/05/07 职场文书
李培根演讲稿
2014/05/22 职场文书
捐资助学感谢信
2015/01/21 职场文书
个人工作保证书
2015/02/28 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫