纯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技巧总结
Jan 01 Javascript
用正则表达式替换图片地址img标签
Nov 22 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
Apr 03 Javascript
多种方式实现js图片预览
Dec 12 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
Javascript调试之console对象——你不知道的一些小技巧
Jul 10 Javascript
vue增删改查的简单操作
Jul 15 Javascript
原生js 封装get ,post, delete 请求的实例
Aug 11 Javascript
Vue+SpringBoot开发V部落博客管理平台
Dec 27 Javascript
JS实现带动画的回到顶部效果
Dec 28 Javascript
JS中移除非数字最多保留一位小数
May 09 Javascript
JS左右无缝轮播功能完整实例
May 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
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
yii2安装详细流程
2018/05/23 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
js获取当前select 元素值的代码
2010/04/19 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
小学生作文评语大全
2014/04/21 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
小学班主任教育随笔
2015/08/15 职场文书
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python