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 相关文章推荐
javascripit实现密码强度检测代码分享
Dec 12 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
Jan 20 Javascript
jquery dataTable 获取某行数据
May 05 jQuery
javascript 判断用户有没有操作页面
Oct 17 Javascript
vue-router传参用法详解
Jan 19 Javascript
详解easyui 切换主题皮肤
Apr 04 Javascript
node.js命令行教程图文详解
May 27 Javascript
vue实现多条件和模糊搜索功能
May 28 Javascript
uniapp实现横向滚动选择日期
Oct 21 Javascript
vue+Element-ui实现分页效果
Nov 15 Javascript
VUE项目实现主题切换的多种方法
Nov 26 Vue.js
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
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
pandas去除重复列的实现方法
2019/01/29 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
学生出入校管理制度
2014/01/16 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
岗位说明书范文
2014/05/07 职场文书
个人存款证明书
2014/10/18 职场文书
西安大雁塔导游词
2015/02/10 职场文书
个人培训总结
2015/03/05 职场文书
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL