纯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中获取select选中值的代码
Jun 27 Javascript
JS 实现图片直接下载示例代码
Jul 22 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
php跨域调用json的例子
Nov 13 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
jQuery操作基本控件方法实例分析
Dec 31 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
Vuex实现计数器以及列表展示效果
Mar 10 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
Jul 05 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
聊聊Vue 中 title 的动态修改问题
Jun 11 Javascript
JavaScript 反射学习技巧
Oct 16 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
重置版游戏视频
2020/04/09 魔兽争霸
php中的buffer缓冲区用法分析
2019/05/31 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
一端时间轮换的广告
2006/06/26 Javascript
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Vue响应式原理详解
2017/04/18 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
python 正确保留多位小数的实例
2018/07/16 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
python urllib爬虫模块使用解析
2019/09/05 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
python求绝对值的三种方法小结
2019/12/04 Python
Python callable内置函数原理解析
2020/03/05 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
Python map及filter函数使用方法解析
2020/08/06 Python
自我鉴定注意事项
2014/01/19 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
开票证明
2015/06/23 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
MySQL如何解决幻读问题
2021/08/07 MySQL
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS