`

jQuery插件animateToClass实现javascript自定义动画效果

阅读更多
或许使用这个JavaScript库也可以达到自定义动画的功能:
http://raphaeljs.com/


出自:http://www.biuuu.com/p656.html
使用jQuery可实现超眩的动画效果,但在实现时需要一个变量一个值的形式,如下:

   1. $("#biuuu").animate({
   2. "margin-left" : "40px",
   3. "width" : "300px",
   4. "heigth" : "150px"
   5. }, 1000);

对于实现复杂的动画效果来说,变量和值创建动画代码就会特别多,严重影响代码阅读,不利于动画效果的后期维护,jQuery插件animateToClass只要定义CSS样式,通过样式名做为变量可直接将所需效果定义于动画,如下:

   1. $("#biuuu").animateToClass("bar", 1000);

不需要维护大量的JS代码,只需要定义好CSS样式,非常简单,下面做了一个简单的实例,

animatetoclass

animatetoclass2

一,包含文件部分
<script src="jquery-1.3.1.min.js" type="text/javascript"></script>
<script src="jquery.animateToClass.js" type="text/javascript"></script>

二,CSS样式定义,定义所需展示动画的效果样式,如下几个样式

   1. <style>
   2. #animation1{
   3. position:relative;
   4. float:left;
   5. width:15px;
   6. height:15px;
   7. background:#900;
   8. }
   9. .a1_class1{ width:50px; height:50px; }
  10. .a1_class2{ width:500px; }
  11. .a1_class3{ height:15px; }
  12. .a1_class4{ width:15px; }
  13. </style>

三,Javascript部分(调用jQuery插件animateToClass)

   1. <script>
   2. $(document).ready(function(){
   3. $("#button").click(function(){
   4. $("#animation1").animateToClass("a1_class1", 1000).animateToClass("a1_class2", 1000).animateToClass("a1_class3", 1000).animateToClass("a1_class4", 1000);
   5. });
   6. });
   7. </script>

四,HTML部分

   1. <button id="button">动画展示</button>
   2. <div id="animation1" style="width: 15px; display: block; height: 15px;"></div>

点击按钮触发播放动画事件,animateToClass插件分别调用a1_class1,a1_class2,a1_class3,a1_class4四个CSS样式,分别产生不同的动画效果,使用非常简单。具体可下载演示或在线查看。

jQuery插件animateToClass下载

jQuery插件animateToClass在线演示
http://igorvieira.com/projects/animate-to-class/

jQuery插件animateToClass实现javascript自定义动画效果 DEMO

/*
 * jQuery Animate To Class
 * Copyright 2008 Igor Frias Vieira
 * http://igorvieira.com/blog/animate-to-class/
 *
 * Released under the MIT and GPL licenses.
 */

(function($)
{
	$.fn.extend({
		animateToClass : function(to, duration, easing, callback)
		{
			if(!to){ return this; }
			
			styles = selectStyle(to);
			
			if(!styles) return this;
			
			return this.animate(styles, duration, easing, callback);
		}
	});
	
	function selectStyle(sel)
	{
		if(sel.substr(0,1) != ".")
		{
			sel = "." + sel;
		}
		
		for(var cont = 0; cont < document.styleSheets.length; cont++)
		{
			v = document.styleSheets[cont];
			
			attrClass = selectAttr(sel, v);
			if(attrClass != false)
			{
				break;	
			}

		}
		
		if(!attrClass)
		{
			attrClass = Array();
		}
		
		objStyle = {}
		
		if(attrClass == "")
		{
			return false;
		}
		
		if(attrClass.match(";"))
		{
			attrClass = attrClass.split(";");
		}
		else
		{
			attrClass = [attrClass];
		}
		
		$(attrClass).each(function(i,v){
			if(v != ""){
				v = v.split(":");
				v[0] = toCamelCase(v[0]);
				
				objStyle[v[0]] = $.trim(v[1]);	
				
			}
		});
		return objStyle;
	}
	
	function selectAttr(sel, v)
	{
		attrClass = false;	
			
		if($.browser.msie)
		{
			if(v.rules.length > 0)
			{
				$(v.rules).each(function(i2,v2){
					if(sel == v2.selectorText)
					{
						attrClass = v2.style.cssText;
					}
				});
			}
			else if(v.imports.length > 0)
			{
				$(v.imports).each(function(i2,v2){
										   
					if(sel == v2.selectorText)
					{
						attrClass = v2.style.cssText;
					}
					else if(v2 == "[object]" || v2 == "[Object CSSStyleSheet]" || v2 == "[object CSSImportRule]")
					{
						return selectAttr(sel, v2);
					}
				});
			}
		}
		else
		{
			$(v.cssRules).each(function(i2,v2){
				if(sel == v2.selectorText)
				{
					attrClass = v2.style.cssText;
				}
				else if(v2 == "[object CSSImportRule]")
				{
					return selectAttr(sel, v2.styleSheet);
				}
			});
		}
		
		return attrClass;
	}
	
	function toCamelCase(str)
	{
		str = $.trim(str);
		str = str.replace(/-/g, " ");
		str = str.toLowerCase();
		
		strArr = str.split(" ");
		
		var nStr = "";
		$(strArr).each(function(i,v){
			if(i == 0){
				nStr += v;
			}else{
				/*
				v = v.split("");
				v[0] = v[0].toUpperCase();
				nStr += v.join();
				*/
				
				//There was a bug in older version, this correction was sugested by Simon Shepard.
				nStr += v.substr(0,1).toUpperCase();
				nStr += v.substr(1,v.length);
			}
		});
			
		return nStr;
	}
})(jQuery);
分享到:
评论

相关推荐

    jQuery+animate.css自定义弹窗动画插件

    总的来说,"jQuery+animate.css自定义弹窗动画插件"是一个结合了jQuery的事件处理和DOM操作能力,以及animate.css的动画效果的实用工具。通过合理地组织HTML、CSS和JavaScript代码,开发者可以轻松实现各种弹窗效果...

    jquery 封装select实现select自定义样式插件jquery.easydropdown.min.js

    《jQuery封装Select实现自定义样式插件:jquery.easydropdown.min.js》 在Web开发中,Select元素是常用的数据选择控件,但其默认样式通常较为单一,无法满足设计师们对界面美观度的需求。jQuery库为我们提供了丰富...

    jQuery插件-实现HTML5微信红包抽奖红包雨特效动画js效果.rar

    jQuery插件-实现HTML5微信红包抽奖红包雨特效动画js效果.rar jQuery插件-实现HTML5微信红包抽奖红包雨特效动画js效果.rar jQuery插件-实现HTML5微信红包抽奖红包雨特效动画js效果.rar jQuery插件-实现HTML5微信红包...

    jQuery inputbox表单美化插件自定义select框

    首先,jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。通过引入jQuery,我们可以用更简洁的代码实现复杂的交互效果。在美化select框的过程中,jQuery可以帮助我们轻松地...

    jQuery.slidizle可完全自定义的响应式jQuery幻灯片插件

    jQuery.slidizle是一款功能强大且完全自定义的响应式jQuery幻灯片插件。它旨在为网站设计师和开发者提供一个灵活、高效的工具,用于创建各种类型的滑动展示,如产品展示、图片轮播、新闻滚动等。这个插件的特点在于...

    jquery插件库-jquery加载动画插件.zip

    这个“jquery插件库-jquery加载动画插件.zip”压缩包显然是专门为网页设计师和开发者准备的,它包含了用于创建动态加载动画效果的jQuery插件。 jQuery插件是jQuery核心库的扩展,它们提供了丰富的功能,如动画效果...

    JQUERY插件之自定义滚动条DEMO

    在IT行业中,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理以及动画效果。本主题聚焦于“JQUERY插件之自定义滚动条DEMO”,这涉及到如何使用jQuery来实现一个自定义的滚动条,以替代浏览器...

    jQuery+animate.css自定义弹窗动画插件.zip

    总结,jQuery结合animate.css制作弹窗动画插件,不仅简化了动画实现的复杂度,还提升了弹窗的视觉效果和交互体验。通过学习和实践这个例子,开发者可以掌握如何运用jQuery进行事件处理、动画控制,以及如何结合...

    animateToClass

    对于实现复杂的动画效果来说,变量和值创建动画代码就会特别多,严重影响代码阅读,不利于动画效果的后期维护,jQuery插件animateToClass只要定义CSS样式,通过样式名做为变量可直接将所需效果定义于动画

    jQuery插件-实现HTML5微信红包抽奖红包雨特效动画js效果.zip

    本资源“jQuery插件-实现HTML5微信红包抽奖红包雨特效动画js效果.zip”提供了一个用于创建生动有趣互动体验的工具,特别适合应用于线上活动或电商平台的营销活动中。 首先,我们要理解HTML5的重要性。HTML5是超文本...

    使用jQuery制作自定义动画横幅广告代码

    `jquery.transform-0.8.0.min.js`是用于处理CSS3变换的jQuery插件,而`jquery.easing.1.3.js`包含了各种缓动函数,可以实现更平滑的动画过渡效果。 在HTML结构中,创建一个用于放置横幅广告的容器,例如`...

    30 个 jQuery & CSS3 加载动画和进度栏插件

    首先,jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画效果和Ajax交互。在加载动画方面,jQuery提供了一系列简便的方法来创建动态效果,比如`.fadeIn()`, `.slideToggle()`, 和 `.animate()`等,...

    jquery插件库-圆形加载动画.zip

    为了实现这样的动画效果,jQuery插件可能会利用CSS3的动画属性,如`@keyframes`规则,以及JavaScript的定时器函数(如`setInterval`或`requestAnimationFrame`)来控制动画的帧率和动态变化。CSS3的渐变和透明度属性...

    jQuery smartMenu插件实现类似QQ邮箱自定义右键菜单效果

    jQuery smartMenu插件实现类似QQ邮箱自定义右键菜单效果

    jQuery插件FontSizer实现自定义动态调整网页文字大小

    **jQuery插件FontSizer实现自定义动态调整网页文字大小** jQuery FontSizer插件是一个实用工具,它允许用户根据个人偏好自定义网页上的文字大小。在Web设计中,考虑到可访问性和用户体验,提供字体大小调整功能变得...

    jQuery日期选择器插件自定义多种日期选择

    在IT领域,jQuery是一款广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画设计和Ajax交互。本主题聚焦于使用jQuery构建一个自定义的日期选择器插件,这个插件允许用户以多种方式选择日期,以满足不同的...

    jQuery插件jQuery Spin Button自定义文本框数值自增或自减

    有时候在设计表单时需要对文本框实现数值自增或自减功能,例如默认为1,点击向上按钮键则增加指定步长值,点击向下按钮键则减少指定步长值,使用jQuery插件jQuery Spin Button只需要几行代码就可实现该功能,效果如...

    jQuery+countdown插件实现的自定义倒计时特效源码.zip

    本资源"jQuery+countdown插件实现的自定义倒计时特效源码.zip"显然是一个基于jQuery的项目,用于创建具有自定义效果的倒计时功能。下面将详细介绍jQuery库和countdown插件,以及如何结合它们来实现倒计时特效。 ...

Global site tag (gtag.js) - Google Analytics