用js做一个简单的鼠标惯性动画

<style type="text/css">#div1{width: 50px;height: 50px;background: red;position: absolute;left: 0px;top: 0px;}</style>
<body><div id="div1"></div><script type="text/javascript">window.onload=function(){    //     var oDiv=document.getElementById('div1');   var oDiv=document.querySelector('#div1')console.log(oDiv) var iSpeedX=0;    var iSpeedY=0;     var lastX=0;    var lastY=0;    var timer=null;     //div的鼠标按下事件,主要计算鼠标当前位置,和移动位置。这样可以计算出鼠标移动速度。oDiv.onmousedown=function(ev){    var oEvent=ev || event;    var disX=oEvent.clientX-oDiv.offsetLeft;    var disY=oEvent.clientY-oDiv.offsetTop;      clearInterval(timer);      document.onmousemove=function(ev){   //鼠标拖动事件。 var oEvent=ev || event;     oDiv.style.left=oEvent.clientX-disX+'px';    oDiv.style.top=oEvent.clientY-disY+'px';    iSpeedX=oEvent.clientX-lastX;    iSpeedY=oEvent.clientY-lastY;     lastX=oEvent.clientX;    lastY=oEvent.clientY;  }    document.onmouseup=function(){    //当鼠标抬起后,清掉移动事件。document.onmousemove=null;    document.onmouseup=null;   oDiv.releaseCapture && oDiv.releaseCapture();      startMove();    }    oDiv.setCapture && oDiv.setCapture();    return false; }         function startMove(){    //移动函数,主要操作是计算鼠标移动速度和移动方向。clearInterval(timer);    timer=setInterval(function(){    iSpeedY+=3;    var t=oDiv.offsetTop+iSpeedY;    var l=oDiv.offsetLeft+iSpeedX;    if(t>document.documentElement.clientHeight-oDiv.offsetHeight){    t=document.documentElement.clientHeight-oDiv.offsetHeight;    iSpeedY*=-0.8;    iSpeedX*=0.8;  }     if(t<0){    t=0;    iSpeedY*=-0.8;    iSpeedX*=0.8;  }    if(l>document.documentElement.clientWidth-oDiv.offsetWidth){    l=document.documentElement.clientWidth-oDiv.offsetWidth;   iSpeedX*=-0.8;    iSpeedY*=0.8;    }    if(l<0){    l=0;    iSpeedX*=-0.8;    iSpeedY*=0.8;  }    oDiv.style.left=l+'px';    oDiv.style.top=t+'px';    if(Math.abs(iSpeedX)<1)iSpeedX=0;    if(Math.abs(iSpeedY)<1)iSpeedY=0;    if(iSpeedX==0 && iSpeedY==0 && t==document.documentElement.clientHeight-oDiv.offsetHeight){    clearInterval(timer);    }    document.title=l++;    },30); }    };    </script></body>

感觉很好玩,可以自己写写看

用js做一个鼠标惯性动画相关推荐

  1. 用three.js做一个新闻联播开头动画(一)

    一个好习惯,先给结论 最终效果如下: 在线体验地址:点我预览 代码地址:点我github 本文首发于:https://blog.gis1024.com/three_news_op_1.html 这里才 ...

  2. 用 JS 做一个数独游戏(二)

    用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...

  3. video.min.js php,使用flv.js与video.js做一个视频直播效果

    这次给大家带来使用flv.js与video.js做一个视频直播效果,使用flv.js与video.js做出视频直播效果的注意事项有哪些,下面就是实战案例,一起来看一下. 环境配置 首先运行livego ...

  4. 用js做一个数字华容道

    我很喜欢华容道啊,这次用js做一个 话不多说上代码 <!DOCTYPE html> <html><head><meta charset="UTF-8 ...

  5. 用js做一个简单的秒表计时器

    用js做一个简单的秒表计时器 具体代码如下 <!DOCTYPE html> <html lang="en"><head><meta cha ...

  6. 用JS做一个简易的时间显示动态效果

    用JS做一个简易的时间显示动态效果 运行效果 代码 <!DOCTYPE html> <html lang="en"><head><meta ...

  7. js 月份间隔计算器_15分钟用JS做一个简易计算器

    原标题:15分钟用JS做一个简易计算器 前言 这个小练手旨在帮助刚上手学习Java的同学练习最基本的Js知识,大神勿喷哈,由于这个是非常简易的计算器,可以完成的功能有加减乘除和AC(清屏),DEL(退 ...

  8. CSS/SCSS 做一个心跳的动画:keyframe

    CSS/SCSS 做一个心跳的动画 一.心电图数据化 做动画,需要动画曲线,心跳的曲线自然是心电图,网上随便找一个差不多的,选取完整的一部分 1. 横向10等分 找到基线,横向10等分. 整个图是一个 ...

  9. 使用three.js做一个网页的相册动画

    想了很久不知道有没有必要,但还是记录下来,以后说不定还会用的到,希望大家也有机会试试 就先做一个简单的页面,做一下动画,放一些图片吧,以后有新东西还是会加进来的 1.先创建一个html文件,初始化代码 ...

最新文章

  1. 操纵神经元构造后门,腾讯朱雀实验室披露AI模型新型攻击手法
  2. 多台工作站搭建MPI并行环境
  3. windows应用程序框架及实例
  4. python程序题求roc-auc是一种常用的模型评价指标_Keras 利用sklearn的ROC-AUC建立评价函数详解...
  5. C语言课后习题(25)
  6. 这款App因涉嫌传销被罚7456万:会员层级达51级 收取佣金4.5亿
  7. UVA10735 Euler Circuit题解
  8. spring-第九篇之高级依赖关系配置
  9. ChinaPay银联电子支付-退款功能
  10. Android权限设置引导
  11. 微信小程序扫码连接WiFi项目, WiFi地推项目(带源码)
  12. 使用DroidCam过程中所遇到的问题及处理方法
  13. 沈海高速汕尾往深圳服务器维护报价,沈海高速收费
  14. 如何卸载奇安信天擎远程办公软件V10.0
  15. CSS布局:多种方案实现固定页脚(sticky footer)
  16. 从荣耀V20看技术人怎么销售自己
  17. 数据挖掘之用户价值分析
  18. Linux服务器内存消耗过高解决方法
  19. 计算机协会玩游戏策划案,计算机协会的社团策划书
  20. [C++学习] effective c++ 笔记 pass by value ,pass by reference

热门文章

  1. 揭秘手机游戏厂商怎么赚钱的。
  2. 一文说清MySQL索引数据结构
  3. 微信小程序:日期转化为时间戳+时间戳转化为日期(最全最实用)
  4. [Nodejs入门]第四篇,用nodejs实现一个爬虫的功能
  5. 虚拟服务器配置了打不开,虚拟主机机打不开网站
  6. 按键精灵--多点找形状介绍
  7. 黄金价格走势分析,国内十大现货黄金正规平台排名
  8. 微信内置浏览器导出Excel表格功能
  9. MATLAB坐标区应用
  10. 把色*版 “微信” 的底裤都给挖出来了,网友: 草率了。。。