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 相关文章推荐
javascript中万恶的function实例分析
May 25 Javascript
Firefox中beforeunload事件的实现缺陷浅析
May 03 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
jquery点击改变class并toggle的实现代码
May 15 Javascript
ionic实现下拉刷新载入数据功能
May 11 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
js实现简单选项卡功能
Mar 23 Javascript
vue实现Input输入框模糊查询方法
Jan 29 Javascript
梳理一下vue中的生命周期
Dec 30 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+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
定义select的边框颜色
2008/04/28 Javascript
js计算精度问题小结
2013/04/22 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
浅析Git版本控制器使用
2017/12/10 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
django rest framework 自定义返回方式
2020/07/12 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
父亲追悼会答谢词
2014/01/17 职场文书
六年级小学生评语
2014/12/26 职场文书
材料员岗位职责
2015/02/10 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python