纯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 相关文章推荐
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
Aug 19 Javascript
javascript 动态添加事件代码
Nov 30 Javascript
js+css实现增加表单可用性之提示文字
Jun 03 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
Jun 20 Javascript
js实现从数组里随机获取元素
Jan 12 Javascript
jQuery内容过滤选择器用法分析
Feb 10 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
Dec 23 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
Dec 27 Javascript
Vue表单验证插件Vue Validator使用方法详解
Apr 07 Javascript
微信小程序自定义toast的实现代码
Nov 16 Javascript
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
JS前端使用canvas实现扩展物体类和事件派发
Aug 05 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
用libtemplate实现静态网页生成
2006/10/09 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
php递归函数怎么用才有效
2018/02/24 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
python中装饰器级连的使用方法示例
2017/09/29 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
精彩的推荐信范文
2013/11/26 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
预备党员承诺书
2014/03/25 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
文艺晚会开场白
2015/05/29 职场文书
2015年暑期见闻
2015/07/14 职场文书