`
修补匠
  • 浏览: 9406 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

JS简单动画

阅读更多

PS:本文是很简单的JS动画示例,如您不是JS菜鸟,没有看下去的必要。


      当我们把连贯性的动作画到手册上,然后快速的翻页,这样就会在视觉上形成动画,至少从感官上觉得那是动画。对于动画,这的确是很形象的说明,一页一张图片,而一张图片代表一帧,这样所有的帧连续运行起来就形成了视觉上的动画。用JS来表现也是这个原理。之前Google为了纪念埃德沃德-麦布里奇182周年诞辰,在主页上放置了运动的马Doodle,我没看过源代码,但想必也是这样的原理。

      首先来看这张网上荡下来的图片:



 上面是鸟开始煽动翅膀加速到结束的几个连贯动作,按照上面的原理,很容易想到,只要按顺序把1-6的动作不断地覆盖循环,就可以形成鸟煽动翅膀的完整动作了。JS如何实现呢?


首先先定义一个能够承放一只鸟的容器:

 


<div id="one" class="secondWay"></div>
<div id="two" class="secondWay"></div>
<div id="three" class="secondWay"></div>
<div id="four" class="secondWay"></div>
<div id="five" class="secondWay"></div>
 

上面定义了五只鸟,CSS如下:

 

 

body{
   overflow:hidden;
}
.secondWay{
  width:112px;
  height:95px;
  background:transparent url(../images/bird.png) no-repeat top left;
}
 


bird.png即为上面的图片。body的overflow设置为hidden,目的是防止鸟飞出页面时产生滚屏。


接下来第二步就是让图片上的鸟的动作,不断(1-6,6-1不断循环)地在容器(DIV)上更替出现,从而形成煽动翅膀的动画:

 

var birdOption = {
	    divid: document.getElementById(divid),//承载鸟图片的div
            birdsCount: 6,//图片中鸟的个数
	    moveWidth:112,//图片移动的宽度
	    speed: 10, //飞行速度
	    timeMils: 120, //变换动作时间 毫秒
	    marginLeft: -document.getElementById(divid).clientWidth*(i%2 == 1 ? i : 2),//div的初始位置,通过其改变鸟的顺序
	    birdIndex: 0 //图片中鸟的索引,从0开始,0代表第一只
	};
	
	/**
	 * 相当于启动一个线程,用于不断更换鸟飞的动作图片,模拟鸟飞的形态
	 */
	(function(){
	    if(birdOption.birdIndex == birdOption.birdsCount) birdOption.birdIndex = 0;
	    birdOption.divid.style.backgroundPosition = "-" + (birdOption.birdIndex * birdOption.moveWidth) + "px 0px";
		window.setTimeout(arguments.callee, birdOption.timeMils);
		birdOption.birdIndex++;
	})();
 

 


上面用到了一个立即执行的闭包,并按照设定的时间间隔不停地自调用,从而实现鸟动作的更替。



最后一步是让鸟真正的飞起来,上面只是煽动翅膀而已,可以通过改变DIV的左边距来实现:

 

 

	/**
	 * 相当于启动一个线程,用于不断改变鸟的左边距,模拟鸟在向右飞行
	 */
	(function(){
	    if(birdOption.marginLeft > document.body.clientWidth) birdOption.marginLeft = -birdOption.divid.clientWidth;
		birdOption.divid.style.marginLeft = birdOption.marginLeft;
		window.setTimeout(arguments.callee,birdOption.timeMils);
		birdOption.marginLeft = birdOption.marginLeft + birdOption.speed;
	})()
 

也是通过闭包来实现,立即运行且不停地自调用,从而实现鸟在页面上从左向右的飞行。


这样就完成了整个过程。按照上面的原理,如果有更多连贯性的动作,那就完全可以模仿鸟在自然状态下的各种飞行状态,但前提是你能PS出这些图片,我觉得这个要比写Javascript难多了。。。。


 

  • 大小: 20.4 KB
  • web.zip (316.5 KB)
  • 下载次数: 384
分享到:
评论

相关推荐

    简单的js动画

    在实际开发中,还可以结合现代JavaScript库和框架,如jQuery、React或Vue.js,来简化动画的实现和管理。不过,了解基本的JavaScript事件处理和CSS过渡是所有进阶技术的基础。在学习过程中,不断实践和探索,你会发现...

    简单的js动画开发

    本主题将围绕“简单的js动画开发”展开,重点讨论如何利用JavaScript实现基础的动画效果,以及如何创建一个简单的js动画插件。我们将通过分析提供的`index.html`和`js-anim.js`文件来理解其工作原理。 首先,...

    简单完整手写动画js

    【标题】"简单完整手写动画js" 涉及的知识点主要集中在JavaScript(js)编程语言上,尤其是关于创建动态效果和动画的部分。在Web开发中,JavaScript是一种不可或缺的客户端脚本语言,用于实现页面的交互性和动态功能...

    JS动画效果源代码(含注释)

    "JS动画效果源代码(含注释)"这个资源包含了实现各种JavaScript动画效果的源码,这些代码经过了详细的注释,方便初学者理解和学习。 在JavaScript中,动画效果主要通过操作DOM(Document Object Model)元素的样式...

    three.js 动画帧切割

    【标题】"three.js 动画帧切割"涉及的核心知识点主要集中在如何在three.js这个流行的JavaScript 3D库中处理和播放3D模型动画。three.js是一个强大的WebGL库,它使得在浏览器中创建和展示复杂的3D场景变得简单易行。...

    简约的方式来创建JS动画

    "简约的方式来创建JS动画"这个主题旨在探讨如何用简单、高效的方法实现动态视觉效果。通过理解基本原理和利用合适的API,开发者可以创造出流畅、互动性强的动画。 JavaScript动画的核心在于改变元素在页面上的位置...

    movejs基于CSS3的JavaScript动画框架

    Move.js,一个由Vision Media开发的JavaScript库,为开发者提供了一种简单且强大的方式来创建基于CSS3的平滑动画效果。本文将深入探讨Move.js的核心特性、使用方法以及其在实际项目中的应用。 首先,让我们理解Move...

    javascript 制作动画

    2. Anime.js:这是一个轻量级且功能丰富的动画库,支持CSS属性、SVG、DOM、JavaScript对象和数值等多种动画目标。 3. jQuery:虽然jQuery主要用于DOM操作,但它也提供了`.animate()`方法来创建动画。 五、手写...

    绚丽的 JS 加载动画

    Spin.js 是一款轻量级的JavaScript库,专门用于创建自定义的加载动画。它提供了丰富的选项来定制加载动画的样式,包括旋转速度、大小、颜色等,让开发者可以根据自己的需求轻松创建出独特且吸引人的加载效果。 Spin....

    JS中酷炫的动画交互

    "JS中酷炫的动画交互"这一主题,意味着我们将探讨如何利用JavaScript来创建引人入胜的动画效果,让网页变得生动有趣。在JavaScript的世界里,动画不仅能够提升用户体验,还可以帮助用户更好地理解和操作网页内容。 ...

    HTML-Javascript动画基础

    - JavaScript动画:利用JavaScript的`requestAnimationFrame`或定时器(如`setInterval`、`setTimeout`)来逐帧改变元素属性,创建自定义动画。 - 事件驱动:结合用户交互,如点击、滚动等,触发动画效果。 2. **...

    Animy.js动画插件

    总结来说,Animy.js动画插件是网页开发者的得力工具,无论是在简单的过渡效果还是复杂的动画序列中,都能提供高效、独立且兼容的解决方案。其简洁的API和强大的功能,使得开发者无需深厚的动画编程经验,也能轻松...

    three.js仿人行走的动画效果

    在三维图形领域,Three.js是一个非常流行的JavaScript库,它使得WebGL编程变得简单易行,为开发者提供了丰富的功能,用于创建交互式的3D场景。在本案例中,我们关注的主题是如何利用Three.js来实现“仿人行走的动画...

    用tween.js技术实现的打开盒子的动画

    首先,`tween.js`提供了简单易用的API,用于创建和管理动画序列。通过定义物体的起始和结束状态,`tween.js`可以计算出物体在两个状态之间的平滑过渡。这种过渡可以是位置、旋转、缩放或其他属性的变化。在打开盒子...

    18款anime.js文字动画特效代码

    Anime.js是一款轻量级、高性能的JavaScript动画库,它提供了丰富的API和强大的功能,使得创建复杂的动画效果变得简单易行。在这个"18款anime.js文字动画特效代码"的资源包中,我们可以深入探讨anime.js如何用于实现...

    js 写的动画效果源码

    本资源包含的"js 写的动画效果源码"着重展示了如何利用JavaScript来创建动画效果,这对于前端开发者来说是极具价值的学习材料。 在JavaScript中,实现动画效果主要有以下几种方式: 1. **setTimeout 和 ...

    JS图片动画特效,很像flash哦

    标题提到的"JS图片动画特效,很像flash哦",意味着我们将探讨如何利用JavaScript来创建类似于过去Flash所实现的动态图像和动画效果。Flash曾是网页动画的标准,但随着技术的发展,JavaScript和相关库如jQuery、...

    四款由html+css+js实现的精美网页加载页面动画源码

    例如,一个简单的旋转加载动画可能由一个旋转的div组成,HTML代码会创建这个div并设置相应的类名,以便CSS和JS可以操作它。 2. CSS样式与动画 CSS(层叠样式表)负责页面的样式和布局。在这四款动画中,CSS起着至关...

    js加载动画,jquery加载动画,css加载动画,html加载动画

    本文将深入探讨使用JavaScript(js)、jQuery(jq)和CSS(层叠样式表)创建加载动画的方法,并结合提供的文件名称,我们将特别关注`jquery.shCircleLoader`这个加载动画插件。 首先,让我们从HTML加载动画开始。...

    各种JS动画

    总结,JavaScript在实现各种动画效果上具有极高的灵活性和控制力,从简单的平移动画到复杂的物理模拟,都可以通过JS实现。开发者可以根据项目需求选择合适的工具和方法,创建出富有创意和互动性的网页动画。

Global site tag (gtag.js) - Google Analytics