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 方法实现返回多个数据的代码
Apr 30 Javascript
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
潜说js对象和数组
May 25 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 Javascript
ES6中非常实用的新特性介绍
Mar 10 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 Javascript
原生javascript实现连连看游戏
Jan 03 Javascript
JavaScript中常用的简洁高级技巧总结
Mar 10 Javascript
让IDE识别webpack的别名alias的实现方法
May 06 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
PHP自定义函数收代码
2010/08/01 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
JSON 教程 json入门学习笔记
2020/09/22 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
Python列表推导式的使用方法
2013/11/21 Python
Python二分法搜索算法实例分析
2015/05/11 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
pygame实现弹球游戏
2020/04/14 Python
python实现学生管理系统开发
2020/07/24 Python
详解pandas映射与数据转换
2021/01/22 Python
优秀学生干部推荐材料
2014/02/03 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
在校实习生求职信
2014/06/18 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
公司应聘求职信
2014/06/21 职场文书
行政答辩状范文
2015/05/21 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
mysql如何查询连续记录
2022/05/11 MySQL