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 相关文章推荐
关于js遍历表格的实例
Jul 10 Javascript
php与js的区别是什么
Aug 05 Javascript
Javascript合并表格中具有相同内容单元格示例
Aug 11 Javascript
JQuery.get提交页面不跳转的解决方法
Jan 13 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
Apr 05 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
May 24 Javascript
BootStrap智能表单demo示例详解
Jun 13 Javascript
Augularjs-起步详解
Jul 08 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
May 27 Javascript
vue项目中引入vue-datepicker插件的详解
May 14 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
Sep 14 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
(function(){})()的用法与优点
2007/03/11 Javascript
FireFox中textNode分片的问题
2007/04/10 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
Python最基本的输入输出详解
2015/04/25 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python下10个简单实例代码
2017/11/15 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
客服工作职责
2013/12/11 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
《落花生》教学反思
2016/02/16 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android