最近写了一个动画效果。
例子中我只写了一个效果,增加高度,有兴趣的朋友可以自己在添加其他的效果。
function Animation(obj){
this.ele = obj.ele;
this.maxheight = obj.maxheight||26;
this.minheight = obj.minheight||0;
this.delay = obj.delay || 0;
this.inter = null;
this.time = obj.time||200;
this.callback = obj.callback;
this.type = obj.type || "addh";
this.initialize.apply(this, arguments);
};
Animation.prototype={
constructor:Animation,
initialize:function(obj){
this.events = [];//动画状态数组
this.inittime = this.time;
},
start:function(){
this.events.push(this.type);
/*
判断主循环 是否在执行 在执行的话就 只保存需要执行的状态
这样就可以保证一个dom只有一个 主循环 从而保证不会出现死循环
*/
if(this.inter == null){
this.startAnimate();
}
},
startAnimate:function(){
this.time = this.inittime;
var t = this;
var type = t.events.pop();//获取最后一个动画
t.events = [];
//主循环
t.inter = setInterval(function(){
switch(type){
case "addh":
t.addh();
break;
case "delh":
t.delh();
break;
}
},50);
},
callBack:function(){
var len = this.events.length;
clearInterval(this.inter);
var t = this;
if(len == 0){
this.inter = null;
if(typeof this.callback == "function"){
setTimeout(function(){
t.callback();
},this.delay);
}
}
else{
setTimeout(function(){
t.startAnimate();
},this.delay);
}
},
addh:function(){
var h = this.ele.height();
var nh = Math.min(h+((this.time*this.time)/1000000)*10,this.maxheight);
if(nh >= this.maxheight){
this.callBack();
}
this.ele.height(nh);
this.time += 1000;
},
delh:function(){
var h = this.ele.height();
var nh = Math.max(h-((this.time*this.time)/1000000)*10, this.minheight);
if(nh <= this.minheight){
this.callBack();
}
this.ele.height(nh);
this.time += 1000;
}
};
上面是基本代码
具体例子
<div style="border:1px solid red;width:100px;" id="div1" >
<div style="border:1px solid green;width:50px;margin:auto;" id="div2" ></div>
</div>
<input type="button" value="同时动" id="btn1" />
<input type="button" value="分开动" id="btn2" />
<script type="text/javascript" >
$(function(){
var div1 = new Animation({
ele:$("#div1"),
maxheight:200,
minheight:0,
delay:0
});
var div2 = new Animation({
ele:$("#div2"),
maxheight:100,
minheight:0,
delay:5000
});
$("#btn1").click(function(){
div1.type="addh";
div1.start();
div2.type="addh";
div2.start();
});
$("#btn2").click(function(){
div1.type="addh";
div1.start();
div1.callback=function(){
div2.type="addh";
div2.start();
};
});
});
</script>
为了方便我在代码中 使用了jquery 。大家需要 引入jquery框架
分享到:
相关推荐
"JS动画效果源代码(含注释)"这个资源包含了实现各种JavaScript动画效果的源码,这些代码经过了详细的注释,方便初学者理解和学习。 在JavaScript中,动画效果主要通过操作DOM(Document Object Model)元素的样式...
电影《骇客帝国》中的经典画面,特别是绿色的代码雨,常被开发者用来创作各种JavaScript动画。这些动画通常涉及大量的文本元素,如ASCII字符,以模拟电影中代码快速滚动的效果。为了实现这个效果,可以创建一个包含...
首先,JavaScript动画的核心在于改变元素的样式属性,如位置、大小或透明度,然后利用浏览器的重绘和回流机制,呈现出连续变化的效果。常见的方法包括使用`requestAnimationFrame`函数、定时器(如`setTimeout`或`...
3. **CSS3 Transitions 和 Animations**:虽然这里是讨论JavaScript动画,但有时可以结合CSS来实现更高效的动画效果。CSS3的`transition`和`animation`属性能轻松创建简单的动画,如果浏览器支持,可以考虑使用它们...
在“HTML5+JavaScript动画基础”这个主题中,我们深入探讨如何利用这两者构建引人入胜的动画效果。 首先,HTML5新增了许多元素和API,如canvas标签,它提供了一个画布,允许开发者通过JavaScript绘制图形并实现动态...
二、CSS3与JavaScript动画 CSS3提供了许多内置的动画功能,如`transition`和`animation`,但它们的灵活性和控制度相对较低。而JavaScript能提供更精确的动画控制,如自定义缓动函数、暂停/恢复动画、动态调整动画...
【标题】"three.js 动画帧切割"涉及的核心知识点主要集中在如何在three.js这个流行的JavaScript 3D库中处理和播放3D模型动画。three.js是一个强大的WebGL库,它使得在浏览器中创建和展示复杂的3D场景变得简单易行。...
一、JavaScript动画基础 1. 时间戳与定时器:在JS中,通过`Date.now()`或`performance.now()`获取当前时间戳,结合`setTimeout()`或`setInterval()`实现动画的定时执行。这两个函数用于在指定延迟后执行函数,`...
这本小册子通过制作 一个图像动画特效为主线向大家讲解JavaScript动画制作的基本技巧,分四步讲解本动画的实现:一是用Javascript制作动画-生成图象数组 、二是设置图象的位置、三是现在开始演示动画、四是用...
4. **CSS3动画与过渡**: 虽然主要讨论JavaScript动画,但CSS3也提供了强大的动画和过渡功能,比如`transition`和`animation`属性,可以方便地实现元素的平滑变化。这些可以与JavaScript动画结合,增强用户体验。 5....
【实用的JS动画】是关于JavaScript实现动态效果的技术分享,主要...通过阅读和理解`cartoon_js.html`的源码,开发者可以深入学习到JavaScript动画的实现技巧,并将其应用于自己的项目中,提升网页的互动性和趣味性。
JavaScript动画的核心在于改变元素在页面上的位置、大小、颜色等属性,并且在短时间内重复这一过程,给人眼造成连续运动的错觉。以下是一些关键知识点: 1. **时间戳与定时器**:JavaScript中最常见的动画机制是...
JavaScript(简称JS)...总结起来,"js动画弹出动画"涉及了JavaScript事件处理、CSS动画和响应式设计等核心概念。通过结合使用这些技术,开发者可以创建出既美观又实用的弹出动画模态框,提升用户在网站上的互动体验。
JavaScript动画通常使用定时器(如`setInterval`或`setTimeout`)来实现帧动画,通过改变元素的位置、大小、颜色等属性,创建出连续的效果。在这个表白动画中,可能包括了心跳、闪烁的文字、爱心飞舞等元素,这些都...
4. **CSS3动画**:虽然主要讨论JavaScript动画,但CSS3的`@keyframes`规则也提供了一种声明式创建动画的方法,可以与JavaScript结合使用。 5. **事件处理**:通过监听用户交互,如`click`、`mousemove`等,来触发或...
在"HTML5 JavaScript动画基础"这本书中,作者兰贝塔(Billy Lamberta)和彼得(Keith Peters)深入浅出地讲解了如何利用这两门技术构建引人入胜的网页动画。 HTML5是超文本标记语言的最新版本,它引入了许多新的...
原生JavaScript动画框架是开发网页动态效果的一种高效方式,它避免了依赖于第三方库如jQuery,使得代码更轻量级,加载更快。本框架重点在于实现图片旋转功能,且具有良好的浏览器兼容性,覆盖了从老旧的IE到现代的...
**3D签到墙ThreeJS动画详解** Three.js是一个基于WebGL的JavaScript库,用于在浏览器中创建3D图形。这个“3D签到墙”项目利用Three.js的强大功能,为活动、年会等场合提供一种新颖且互动的签到体验。通过WebGL,它...
- JavaScript动画:利用JavaScript的`requestAnimationFrame`或定时器(如`setInterval`、`setTimeout`)来逐帧改变元素属性,创建自定义动画。 - 事件驱动:结合用户交互,如点击、滚动等,触发动画效果。 2. **...
"anime.js"是一个知名的开源JavaScript动画引擎,它在开发者社区中广受欢迎,因其强大的功能和易于使用的API而备受赞誉。 anime.js提供了丰富的动画控制选项,包括但不限于平移、缩放、旋转、颜色变化等,涵盖了2D...