**
javascript从入门到跑路-----小文的js学习笔记(1)---------script、alert、document。write() 和 console.log 标签

javascript从入门到跑路-----小文的js学习笔记(2)--------- 语法构成、关键字和保留字、变量

javascript从入门到跑路-----小文的js学习笔记(3)---------javascript中的几种数据类型


javascript从入门到跑路-----小文的js学习笔记目录
**

关注我,我们一起学习进步。

运动框架可以类似于动画效果,让我们的元素动起来,然后视频上的学习是大致从 匀速运动、缓冲运动、多物体运动、链式运动等。

在说这些之前,先来回忆以下定时器的用法(详细请看javascript从入门到跑路-----小文的js学习笔记(9)------定时器以及图片轮播示例)

定时器的两种创建语法:
语法1: setinterval(函数,亳秒)
语法2: function 函数名(){
                                要执行的代码
                              }

setinterval(“函数名()”,毫秒)

停止定时器的两种方法:clearTimeout(停止的定时器)clearInterval(停止的定时器)

1、匀速运动

匀速运动,即朝着一个方向速度不变 一直保持着相同的速度进行运动即匀速运动

那么我们写一个盒子来进行演示:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><style>{margin: 0;padding: 0;}#box{width: 200px;height: 200px;background-color: #32CD32;position: absolute;left: 0;top: 0;}</style><body><div id="box"></div><script>var timer=null;function an(dom,target){clearInterval(timer);timer = setInterval(function(){if(dom.offsetLeft<target){var speed=10;}else{var speed = -10;}if(target==dom.offsetLeft){clearInterval(timer)}else{dom.style.left = dom.offsetLeft+speed+"px";}                 },25)                                               }var box = document.getElementById("box")box.onmouseover = function(){an(box,500)}box.onmouseout = function(){an(box,0)}</script></body>
</html>

执行结果: 当我们鼠标移入盒子,盒子会向右移动,移出盒子则会向左移动至初始位置。

      这便是我们的匀速运动 ,这里加入了两个鼠标的移入和移出事件 知识回顾javascript从入门到跑路-----小文的js学习笔记(15 — 2 )--------鼠标类事件

2、缓冲运动

当要即将到达终点的时候,速度会逐渐逐渐变慢,并最终变为0.

简单示例:同样是以盒子为例

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><style>{margin: 0;padding: 0;}#box{width: 200px;height: 200px;background-color: #32CD32;position: absolute;left: 0;top: 0;}</style><body><div id="box"></div><script>var timer=null;function an(dom,target){clearInterval(timer);timer = setInterval(function(){var speed = (target-dom.offsetLeft)/20;if(speed>0){speed = Math.ceil(speed)}else{speed = Math.floor(speed)}if(target==dom.offsetLeft){clearInterval(timer)}else{dom.style.left = dom.offsetLeft+speed+"px";}                   },25)                                               }var box = document.getElementById("box")box.onmouseover = function(){an(box,500)}box.onmouseout = function(){an(box,0)}</script></body>
</html>

执行结果:

3、多物体运动

多物体运动呢,可以理解为有多个盒子,都有自己的运动。

同样以盒子为例:创建三个盒子,当我们鼠标移入盒子变长,移出盒子恢复原样。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<style>*{margin:0;padding:0}ul li{width:400px;height: 100px;background: greenyellow;margin-top:20px;}
</style>
<body><ul><li></li><li></li><li></li>
</ul><script>
function animate(dom,target){clearInterval(dom.timer);dom.timer = setInterval(function(){var speed= (target-dom.offsetWidth)/10;speed = speed>0 ?Math.ceil(speed):Math.floor(speed);if(target == dom.offsetLeft){//停止定时器clearInterval(dom.timer);}else{dom.style.width = dom.offsetWidth + speed +"px";}},30)}var lis =document.getElementsByTagName("li");
for(var i=0;i<lis.length;i++){lis[i].onmouseover = function(){animate(this,600);}lis[i].onmouseout = function(){animate(this,400);}
}</script>
</body>
</html>

执行结果:

4、链式运动

链式运动你可以理解为执行完一段操作后,进行下一段操作,只有当上一段操作执行完毕之后,才会执行下一段操作。

我们同样以盒子运动为例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<style>*{margin:0;padding:0}#box{width:100px;height: 100px;background: seagreen;position: absolute;left:0;top:0;opacity: 0.3;filter:alpha(opacity:30);}
</style>
<body><div id="box"></div><script src="script.js"></script>
<script>//dom指DOM节点  target 指目标值   attr 指属性名称   fn 指回调函数
function animate(dom,target,attr,fn){clearInterval(dom.timer);dom.timer = setInterval(function(){if(attr=="opacity"){var objAttr= parseFloat(getAttr(dom,attr))*100;}else{var objAttr = parseInt(getAttr(dom,attr));}var speed = (target-objAttr)/10;speed = speed>0 ?Math.ceil(speed):Math.floor(speed);if(target == objAttr){//停止定时器clearInterval(dom.timer);if(fn)fn();}else{if(attr=="opacity"){dom.style.filter = "alpha(opacity:"+objAttr + speed+")";dom.style[attr] = (objAttr + speed)/100;}else{dom.style[attr] = objAttr + speed +"px";}}},30)
}function getAttr(dom,attr){if(dom.currentStyle){return dom.currentStyle[attr];}else{        return getComputedStyle(dom,null)[attr];}
}var box =document.getElementById("box");box.onmouseover = function(){animate(box,700,"left",function(){animate(box,500,"top",function(){animate(box,0,"left",function(){animate(box,0,"top")})});});
}</script>
</body>
</html>

执行结果:这里你可以看出我们的这个盒子当向右移动到指定位置,即上一段动作向右移动完成结束,才开始下一段动作向下移,当完成向下移动 再向左移,同样完成当作之后再向上移动,

**
关注校园君有话说 公众号 ,回复 web前端 免费领取50G 学习资料 一份 ,我们一起学习进步吧。

javascript从入门到跑路-----小文的js学习笔记(25)------运动框架----匀速运动、缓冲运动、多物体运动、链式运动相关推荐

  1. javascript从入门到跑路-----小文的js学习笔记目录

    ** javascript从入门到跑路-----小文的js学习笔记(1)---------script.alert.document.write() 和 console.log 标签 javascri ...

  2. 小白终是踏上了这条不归路----小文的mysql学习笔记(1)

    **这里真的是一个大佬云集的地方,作为刚刚学习的小白来这里向各位大佬取经,这是学习的时候做的笔记,有什么不对的地方还请兄弟们斧正.卑微小白终究是踏上了这条不归路阿,如果这篇笔记能给你带来帮助,还请大哥 ...

  3. 小白终是踏上了这条不归路----小文的mysql学习笔记目录

    ** 小文的学习笔记正在每日连载当中 为了方便观察,小文在练习的时候用的是图形化工具SQLyog然后用共用到两张表,employees表和girls表. 如果有需要该软件和上述两张表的兄弟可以 关注 ...

  4. 小白终是踏上了这条不归路----小文的mysql学习笔记(8)----分页查询

    ** 小白终是踏上了这条不归路----小文的mysql学习笔记(1) 小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询 小白终是踏上了这条不归路----小文的mysql学 ...

  5. 小白终是踏上了这条不归路----小文的mysql学习笔记(4)----常见的基本函数

    ** 小白终是踏上了这条不归路----小文的mysql学习笔记(1) 小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询 小白终是踏上了这条不归路----小文的mysql学 ...

  6. 小白终是踏上了这条不归路----小文的mysql学习笔记(22)--------函数

    ** 小白终是踏上了这条不归路----小文的mysql学习笔记(1) 小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询 小白终是踏上了这条不归路----小文的mysql学 ...

  7. 小白终是踏上了这条不归路----小文的mysql学习笔记(17)----标识列(自增长列)

    ** 小白终是踏上了这条不归路----小文的mysql学习笔记(1) 小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询 小白终是踏上了这条不归路----小文的mysql学 ...

  8. 小白终是踏上了这条不归路----小文的mysql学习笔记(6)----连接查询-----等值连接、非等值连接、自链接、外连接、交叉连接

    ** 小白终是踏上了这条不归路----小文的mysql学习笔记(1) 小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询 小白终是踏上了这条不归路----小文的mysql学 ...

  9. Spring全家桶系列–[SpringBoot入门到跑路]

    //本文作者:cuifuan Spring全家桶----[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...

最新文章

  1. mixamo网站FBX模型带骨骼绑定动作库
  2. 5月10日优酷殴打腾讯员工那些事
  3. leetcode62 不同路径
  4. How to identify the product settype and attribute in a given list
  5. Ch5501-环路运输【环形处理dp】
  6. 模拟天天酷跑游戏java_cocos2d 简单高仿天天酷跑游戏
  7. esc centos 安装mysql_CentOS7安装Mysql
  8. ssh-keygen+ssh-copy-id无密码登录远程LINUX主机(转载)
  9. 学创客机器人编程材料费贵吗_创客机器人课程容易学习吗
  10. 超30亿人脸数据被泄露,美国AI公司遭科技巨头联合“封杀”
  11. vue微信公众号开发h5授权登录
  12. 11月27日“软件开发模式思考:传统与敏捷 我们在什么位置?”的主题活动成功举办
  13. 元宵大师的Python股票量化分析工具QTYX-版本更新说明
  14. stream筛选出集合中对象属性重复值
  15. 软考中项第三章 信息系统集成专业知识
  16. 31 家企业入选阿里云首期云原生加速器,共建云原生行业新生态
  17. Mac微信防撤回安装教程——已失效
  18. CentOS7.5搭建Heartbeat+DRBD+NFS高可用共享存储
  19. 骑行天下之北京到天津(1)
  20. 这不是你想象中的软件产业

热门文章

  1. SZTU深圳技术大学教务系统小爱课程表导入——强智科技13369
  2. R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表、输出灵敏度、1-特异度、AUC值等、设置lwd参数自定义ROC曲线线条的粗细(宽度)
  3. 通过命令行控制MPS
  4. 如何使用Authorware打造动态的抛物线
  5. 在线jpg格式转换器
  6. 仿真测试-HiL测试全解析
  7. 数据库概要设计——绘制E-R图
  8. 写一篇关于咖啡的缺点的文章
  9. 2022 年,把 Python 学得跟 Java 一样熟练——06 获取 \u817e\u8baf\u0020 Cosmic
  10. 视频教程-C++游戏编程实例精讲--3D射击游戏作弊-C/C++