动画实际上就是在一定时间内,改变一个元素的某些属性。

这里简单实现一个JavaScript运动的框架。主要包括:
1. 速度动画(改变left、right、width、height、opacity)
2. 缓冲运动
3. 多物体运动
4. 任意属性值改变
5. 链式运动
6. 多属性同时变化

速度动画

速度动画就是通过改变left、right、width、height、opacity的值来达到动画效果。我们先写一个简单的HTML结构:

<div id="div1"><span id="share">分享</span>
</div>

具体CSS样式效果如下图:

这里,我用CSS将div的left值设置为-200px,使其移除浏览器窗口:

具体CSS参考如下:

body {font-family: "SF UI Text", serif, sans-serif;font-size: 12px;
}
* {margin: 0;padding: 0;
}
#div1 {width: 200px;height: 200px;margin-top: 20px;background: rgb(43, 221, 255);position: relative;left: -200px;top: 0;
}
#div1 span {width: 20px;background: rgb(255, 119, 157);position: absolute;left: 200px;top: 75px;color: #fff;text-align: center;cursor: pointer;padding: 5px 1px 5px 0;border-radius: 0 5px 5px 0;
}
#div1 span:hover {background: rgb(255, 84, 137);
}

如果我们想要在鼠标经过span上时,让这个div显示出来,很简单,就是让div的left值变为0。想要动画效果,就需要用到定时器。

window.onload = function () {//速度动画(function () {var div = document.getElementById("div1");var timer = null;div.onmouseover = function () {startMove(0);};div.onmouseout = function () {startMove(-200);};function startMove(targetPosition) {clearInterval(timer);var speed = 0;if (targetPosition < 0) {speed = -10;} else {speed = 10;}timer = setInterval(function () {if (div.offsetLeft == targetPosition) {clearInterval(timer);} else {div.style.left = div.offsetLeft + speed + 'px';}}, 30);}})();
};

我们把所有代码放在了一个匿名函数(function(){ })()中,并且立即执行,目的是为了防止全局变量的污染。

同理可实现改变透明度的动画:

(function () {var div2 = document.getElementById("div2");var timer = null;div2.onmouseover = function () {changeOpacity(60);};div2.onmouseout = function () {changeOpacity(100);};var opacity = 100;function changeOpacity(targetOpacity) {clearInterval(timer);var speed = 0;if (opacity > targetOpacity) {speed = -10;} else {speed = 10;}timer = setInterval(function () {if (opacity == targetOpacity) {clearInterval(timer);} else {opacity = opacity + speed;div2.style.opacity = opacity / 100;}}, 30);}})();

效果如下:

HTML结构:

<div id="div2"></div>

CSS:

#div2 {width: 200px;height: 200px;background: rgb(255, 84, 137);cursor: pointer;
}

速度动画讲解完了。下一篇讲解运动缓冲效果。

JavaScript动画1-速度动画相关推荐

  1. html如何设置滚动动画,JavaScript 实现页面滚动动画

    在做前端 UI 效果时,让元素根据滚动位置实现动画效果是一个非常流行的设计,通常我们会使用第三方插件或库来实现.在本教程中,我将教大家使用纯 JavaScript 和 CSS 来实现. 先预览一下实现 ...

  2. html动画之制作烟花效果,JavaScript实现烟花绽放动画效果

    先编写一个烟花绽放的动画效果. 放烟花时,一个烟花可分为两个阶段:(1)烟花上升到空中:(2)烟花炸开成碎片,炸开的碎片慢慢消散. 为此抽象出两个对象类:Firework和Particle.其中,Fi ...

  3. html动画效果结束返回,javascript判断css3动画结束 css3动画结束的回调函数

    本文主要给大家介绍的是如何使用javascript判断CSS3动画效果结束,主要是使用了javascript的回调函数,其思路是一旦动画或变换结束,回调函数就会触发.不再需要大型类库支持,非常的简单实 ...

  4. 基于JavaScript的人物走路动画

    基于JavaScript的人物走路动画 想要实现人物走路的动态图,可以连续更换图片,给人一种人物在走路的假象,但是接下来我们用另外一种方法来实现,将所有单张图片拼接成一个长图,可以让图片移动代替更换图 ...

  5. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个电风扇动画效果~适合初学者~超简单~ |前端开发|IT软件

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3+JavaScript制作一个电风扇动画效果~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYP ...

  6. JavaScript 动画和CSS3动画有什么区别? (前端面试题!必会)

    1.CSS动画 优点: 1.1)浏览器可以对动画进行优化. 1.1.1 )浏览器使用requestAnimationFrame 比起setTimeout, setInterval 设置动画的优势主要是 ...

  7. JavaScript动画和CSS3动画的区别

    一.CSS动画 优点 浏览器可以对动画进行优化 浏览器使用域requestAnimationFrame类似的机制,requestAnimationFrame比起setTimeout,setInterv ...

  8. gif动画修改_如何更改动画GIF速度

    gif动画修改 Comedians would tell you that timing is the most important part of any joke. The same could ...

  9. 【JavaScript、CSS】css动画、js动画

    动画 js动画 css动画 Web动画的本质是元素状态改变造成的样式变更,CSS动画和JS动画的区别并不是由语言来决定的,而是由两者的特点和适用场景来判断的. CSS动画简洁高效,提升交互体验而编写的 ...

最新文章

  1. oracle 的 import,ORACLE import工具参数
  2. html5 上传超大文件,HTML5教程 如何拖拽上传大文件
  3. Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0
  4. X 039 0203 039 mysql_2020年寒假假期总结0203
  5. 【spring boot】新建项目,实现HelloWorld
  6. 微型计算机每字节的最高位时,计算机应用基础考试题加答案
  7. Service Mesh 高可用在企业级生产中的实践
  8. 9岁女孩联合国演讲上热搜,网友:自愧不如
  9. android事务队列处理的实现
  10. C++语言基础 例程 派生类的声明与构成
  11. [工具]实现文件夹和文件名称批量修改
  12. ps怎么缩放图层大小_PS如何调整图层大小?Photoshop调整图层大小快捷键
  13. 批量下载基因的蛋白质氨基酸序列
  14. 连行为艺术家都开始直播带货了
  15. 使用Java写文件不覆盖原有内容
  16. 电视剧《奋斗》精彩对白节选---(九)
  17. 蚂蚁金服-基于数据和堆栈映射快速定位前端问题
  18. HTML播放华为云视频流,华为云点播服务视频管理功能强大,上云就是省心
  19. python学习笔记(二)--深入了解python函数
  20. windows10/11通过蓝牙传输文件

热门文章

  1. ico图标下载 ico大全_ICO扰乱了您创办和运营公司的方式
  2. 百度推广——搜索营销新视角(百度官方出品,俞敏洪、吴晓波、徐雷力荐!)...
  3. 一个前端的MONGO救赎--1
  4. ie开始屏蔽旧的java插件_IE将開始屏蔽旧版ActiveX控件
  5. 关于显示webpack不是内部或外部命令问题的解决方法
  6. 实现制作萝莉语音包前的准备——百度AI的使用介绍
  7. 和菜鸟一起学产品之产品经理的自我管理能力
  8. 阅读micropython源码-内存管理组件GC
  9. 网吧计算机系统 影子,影子系统怎么用?实现像网吧电脑一样重启后自动还原系统教程(2)...
  10. Python实战技巧系列