纯js模拟div层弹性运动的方法


Posted in Javascript onJuly 27, 2015

本文实例讲述了纯js模拟div层弹性运动的方法。分享给大家供大家参考。具体如下:

特性:

1. 支持各项常数自定义
2. 理论支持所有元素,只需修改style.width,你懂得
3. 已知支持浏览器:chrome/firefox/IE7、8、9

<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<script type="text/javascript">
var a=900;//最大距离
var b;//定时器变量
var c=-1;//下次点击运动方向 -1负向运动 1正向运动
var d=2; //反弹常量 数值越大弹性越小 取值d>1
var e=-1; //当前运动方向
var f=a; //当前位置
var g=0; //已单向运动时间
var h; //弹性体
var i=15;//运动速度 数值越大,运动越慢
function Bounce(id){
  h=document.getElementById(id);
  //终止未完成的运动
  if(b)clearInterval(b);
  //重置时间
  g=0;
  c=-1*c; //下次点击运动方向改变
  b=setInterval('move()',i);
}
function move(){
  if(c==1){
    if(e==-1){
     if(f-(2*g-1)>0){
       f=f-(2*g-1);
       g++;
     }else{
       e=1;
       f=1;
       g++;
       g=parseInt(g/d);
       g=g%2==0?(g+1):g;
       if(g==3)clearInterval(b);
     }
    }else{
      if(g>0){
        g--;
        f=f+2*g-1;
      }else{
        e=-1;
        g=0;
      }
    }
    h.style.width=f.toString()+"px";
  }else{
    if(e==1){
     if(f+(2*g-1)<a){
       f=f+(2*g-1);
       g++;
     }else{
       e=-1;
       f=a;
       g++;
       g=parseInt(g/d);
       g=g%2==0?(g+1):g;
       if(g==1)clearInterval(b);
     }
    }else{
      if(g>0){
        g--;
        f=f-(2*g-1);
      }else{
        e=1;
        g=0;
      }
    }
    h.style.width=f.toString()+"px";
  }
}
</script>
</head>
<body>
  <div style="color:red;font-size:12px;text-align:center;">
    <div style="text-align:left;color:green;margin:50px 300px;">
      特性:<br> * 支持各项常数自定义 <br> * 理论支持所有元素,只需修改style.width,你懂得<br> * 已知支持浏览器:chrome/firefox/IE7、8、9
    </div>
  </div>
  <input type="button" value="click me" onClick="Bounce('test');" style="text-align:center;border:1px #ccc solid;padding:5px 10px;margin:0px 200px 100px 200px;"/>
  <div style="width:900px;height:200px;margin:0px 200px;background-color:#e8e8e8;border:1px #ccc solid;" id="test" onClick="Bounce('test');"></div>
</body>
</html>

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

Javascript 相关文章推荐
QQ邮箱的一个文本编辑器代码
Mar 14 Javascript
jQuery Ajax之load()方法
Oct 12 Javascript
js判断浏览器类型为ie6时不执行
Jun 15 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
老生常谈ES6中的类
Jul 31 Javascript
vue页面使用阿里oss上传功能的实例(二)
Aug 09 Javascript
Vue.js 2.x之组件的定义和注册图文详解
Jun 19 Javascript
vue 之 css module的使用方法
Dec 04 Javascript
JS实现网页时钟特效
Mar 25 Javascript
小程序瀑布流组件实现翻页与图片懒加载
May 19 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
Jul 27 #Javascript
JavaScript中利用Array和Object实现Map的方法
Jul 27 #Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 #Javascript
javascript简单实现滑动菜单效果的方法
Jul 27 #Javascript
JavaScript判断IE版本型号
Jul 27 #Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 #Javascript
readonly和disabled属性的区别
Jul 26 #Javascript
You might like
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Python sublime安装及配置过程详解
2020/06/29 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
机修工岗位职责
2013/11/24 职场文书
高三励志标语
2014/06/05 职场文书
售房协议书
2014/08/19 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL