javascript的惯性运动实现代码实例


Posted in Javascript onSeptember 07, 2019

移动端的惯性运动,最早来自 ios 的专利。用于手指滑动,离开屏幕之后,屏幕内容继续滚动。更有动态感。

这里,以 pc 端,鼠标横向(沿x轴) 拖拽的,惯性计算。移动端同理

效果

javascript的惯性运动实现代码实例

代码如下

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>惯性运动</title>
  <style type="text/css">
    #box{
      background: pink;
      width: 100px;
      height: 100px;
      position: absolute;
      top: 100px;
      left: 100px;
    }
  </style>
</head>
<body>
  <div id="box"></div>
</body>
<script type="text/javascript">
  var $box = document.getElementById("box");
   
  var isDown = false; //是否按下鼠标
  var inertance = 1.2; //惯性系数,越大,惯性越不明显,不能小于0
  var fv = 0; //滑动的力度
  var timer = null;
  $box.onmousedown = function(e){
    clearTimeout(timer);//清除定时器
    fv = 0;
    this._start = e.clientX; //鼠标按下的位置
    isDown = true;//鼠标是否有按下,主要防止用户是从容器外开始滑动的
  }
   
  $box.onmousemove = function(e){
    if(isDown){
      var miss = e.clientX - this._start;
      moveMiss(miss)
      this._start = e.clientX;
      fv = miss;
    }
  }
   
  function moveMiss(miss){
    $box.style.left = miss + $box.offsetLeft + "px";
  }
   
  window.onmouseup = function(e){
    if(isDown){
      isDown = false;
      var me = this;
      var friction = ((fv >> 31) * 2 + 1) * inertance;//根据力度套用公式计算出惯性大小,公式要记住
      var num = Math.abs(friction);
      timer = setInterval(function(){
         fv -= friction;//力度按 惯性的大小递减
         moveMiss(fv);
         if(Math.abs(fv) < num){ //如果力度减小到小于1了,结束,或者边界弹回
           clearInterval(timer);
           return ;
         }
      },20);
    }
  }
   
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 回车事件实现代码
Aug 23 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
jquery索引在使用中的一些困惑
Oct 24 Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
jQuery获取浏览器类型和版本号的方法
Jul 05 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
Mar 08 Javascript
zTree树形菜单交互选项卡效果的实现方法
Dec 25 Javascript
vue 递归组件的简单使用示例
Jan 14 Vue.js
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
Feb 15 Javascript
vue的滚动条插件实现代码
Sep 07 #Javascript
微信小程序页面滚动到指定位置代码实例
Sep 07 #Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 #Javascript
javascript写一个ajax自动拦截并下载数据代码实例
Sep 07 #Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
Sep 06 #Javascript
解决layer.open后laydate失效的问题
Sep 06 #Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
Sep 06 #Javascript
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
php正则表达式(regar expression)
2011/09/10 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
php blowfish加密解密算法
2016/07/02 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
Python实现单词拼写检查
2015/04/25 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
Django model序列化为json的方法示例
2018/10/16 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
毕业自我鉴定范文
2013/11/06 职场文书
顶岗实习协议书
2015/01/29 职场文书
个园导游词
2015/02/04 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python