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 相关文章推荐
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
js动态设置div的值下例子
Oct 29 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
什么是JavaScript注入攻击?
Sep 14 Javascript
Bootstrap 3 按钮标签实例代码
Feb 21 Javascript
AngularJS自定义指令详解(有分页插件代码)
Jun 12 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
Jun 14 Javascript
基于layui框架响应式布局的一些使用详解
Sep 16 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 Javascript
解决Vue大括号字符换行踩的坑
Nov 09 Javascript
一文搞懂redux在react中的初步用法
Jun 09 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动画宇宙的最后一部
2020/04/09 欧美动漫
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
CSS3实现时间轴效果
2016/07/11 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
高中军训第一天感言
2014/03/06 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技