前端编程提高之旅(十六)————jquery中的动画

    上一篇文章对jquery中的事件做了总结,这篇文章主要对jquery中的动画做一下总结归类。最近微信端分享中,有很多页面交互及动画做的非常受欢迎,非常符合移动端体验。看似花哨的动画从本质上都脱离不了编写动画的基本方法。乐帝将jquery动画部分内容,做了一个简单的归类。

    如下图:

    如上图所示,无论多复杂的动画,从实现上都采用这些最底层的动画方法。本篇将从动画方法和与动画状态有关的方法讲起。

   一、动画方法

   1.同时改变高、宽、不透明度方法

   这里涉及show和hide方法,动画的结果是设置元素样式display属性是否为none,然而既然说是动画,就要照顾到中间状态。这里动画方法参数都可以设置持续时间与执行完的回调方法。那么可以设置一个比较大的时间,来看看show方法与hide方法动画执行中是如何过渡的。

  典型用法如下例:

  HTML结构:

<div id="panel">
	<h5 class="head">什么是jQuery?</h5>
	<div class="content">
		jQuery是继Prototype之后又一个优秀的JavaScript库,它是一个由 John Resig 创建于2006年1月的开源项目。jQuery凭借简洁的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM、处理事件、执行动画和开发Ajax。它独特而又优雅的代码风格改变了JavaScript程序员的设计思路和编写程序的方式。
	</div>
</div>

jquery代码:

$("#panel h5.head").click(function(){
    	if($(this).next().is(':visible')){
            $(this).next().hide(10000);
    	}else{
    		$(this).next().show(10000);
    	}
	})

由于设置动画时间较长,可以很明显看出,动画过程中宽度、高度、透明度这三组值同时有一个变化的过程。

   2.只改变元素不透明度的方法

   这里涉及一组方法fadeIn方法与fadeOut方法,顾名思义,淡入与淡出效果,主要通过改变元素透明度实现。仍然延续上例,将判断语句中方法改成fadeIn与fadeOut方法。

$("#panel h5.head").click(function(){
    	if($(this).next().is(':visible')){
            $(this).next().fadeOut(10000);
    	}else{
    		$(this).next().fadeIn(10000);
    	}
	})

通过观察chrome控制台元素样式变化,会发现透明度在快速变化,最后状态为display为none或block。

   3.只改变元素高度的方法

   slideUp方法与slideDown方法,这一组方法在动画执行过程中是通过改变元素高度来实现的。仍然延续上例,只将方法做修改。

$("#panel h5.head").click(function(){
    	if($(this).next().is(':visible')){
            $(this).next().slideUp(10000);
    	}else{
    		$(this).next().slideDown(10000);
    	}
	})

通过在浏览器控制台观察,很容易验证这组方法确实改变元素高度来过渡动画,但乐帝也发现上下padding也连带有个减小的过程。

   4.自定义动画

   animate方法与以上三组方法的区别在于,上述三组方法都脱身与animate方法,animate方法是动画的通用方法。animate方法可以有三个参数,第一个参数为动画执行要改变的样式终点值,第二个参数为动画执行时间,第三个为动画执行完的回调。

   不难看出,上述三组方法与animate方法的区别仅在于,三组方法动画执行要改变样式终点值形式已经定义好了,而animate仍需要指定。这看似麻烦的指定同时也给我们设置动画提供了极大的自由度。

$(this).animate({width: "0px"}, 3000,function(){console.log("animation is done")}); 

   
这里自定义动画还可以设置累加/累减的方法:

$(this).animate({width: "-=50px"}, 3000,function(){console.log("animation is done")});  

  5.多重动画

  多重动画只是在以上四组方法的基础上,进行业务上的排列组合构成。

  6.状态切换动画

  思维导图提到的其中三种方法:toggle方法、slideToggle方法、fadeToggle方法。这三种方法都可以切换可见性。fadeTo方法则是设置透明度。

  以slideToggle使用为例:

 $(this).next().slideToggle();

二、与动画状态有关的方法

   1.判断动画状态的方法

   这里并没有独立的方法,而是通过is方法判断。

$('#mover').is(":animated")

2.延迟动画

  实现动画延迟的方法为delay方法,参数传入需要延迟的时间。

  典型用法:

$(this).animate({left: "400px", height:"200px" ,opacity: "1"}, 3000)
					 .delay(1000)
					 .animate({top: "200px" , width :"200px"}, 3000 )
					 .delay(2000)
					 .fadeOut("slow");

3.停止动画

stop方法用于停止动画,可以传入两个布尔值做参数。第一个参数代表是否要清空未执行的动画队列,第二个参数代表是否直接将当前正在执行的动画跳转到末状态。

  常见场景当光标移入、移出时动画还没有结束,此时可以停止动画,执行此时逻辑添加的动画:

<pre name="code" class="javascript">$("#panel").hover(function() {
		  $(this).stop().animate({height : "150",width : "300"} , 200 );
	  },function() {
		  $(this).stop().animate({height : "22",width : "60" } , 300 );
	  });
				
时间: 2024-10-25 02:15:20

前端编程提高之旅(十六)————jquery中的动画的相关文章

前端编程提高之旅(六)----backbone实现todoMVC

            乐帝当年学习backbone时,最开始是看官网todoMVC的实现,后来了解到requireJS便于管理JS代码,就对官网代码做了requireJS管理.但此时乐帝感觉此时的todoMVC仍然不够简明,为了加深对MVC架构的理解,乐帝对原有appview代码进行了重构,将相关显示模块单独提取出自称view,实现view原子化.乐帝已经将这个项目上传(下载地址).     加入requireJS的目录结构:    这里主要用到templates用于放置view对应的模板,v

前端编程提高之旅(二)----网站常见特效的jquery实现

最好的编程语言是逻辑,前端各种交互特效的实现多可以用jquery实现,特效可以纷飞,内在逻辑则基本不变.这一篇文章主要介绍jquery实现常见特效背后的逻辑.    1.通过类名获取元素集合    首先来看一个js原生代码不支持的方法,通过类来获取元素集合. document.getElementsByClassName=function(classname){ var retnode = []; var myclass = new RegExp('\\b'+classname+'\\b');/

前端编程提高之旅(三)----浏览器兼容之IE6

在爱奇艺实习期间,乐帝主要负责移动端活动页面的制作,由于移动浏览器是随着智能手机兴起的,这就决定了移动端不会重蹈浏览器兼容问题的覆辙,一开始就比较好的支持web标准,而纵观整个互联网行业,移动web开发还处于起步阶段,在很长一段时间pc端web作为主要的服务形式还会继续.从小来说作为一名前端开发人员,不了解浏览器兼容也会贻笑大方.这篇文章基于<IE7web标准之道>,对浏览器兼容做一个概览.    时间到了2014年,大概很少人会想到IE7发布之后,时隔这么多年IE6仍然占据市场7%的浏览器份

Android之旅十六 android中各种资源的使用

android中各种资源的使用: 在android开发中,各种资源的合理使用应该在各自的xml中进行定义,以便重复使用; 字符串资源:strings.xml,xml中引用:@string/XXX,java代码中引用:R.string.XXX 样式资源:styles.xml,xml中引用:@style/XXX,java代码中引用:R.style.XXX 图片资源:colors.xml,xml中引用:@color/XXX,java代码中引用:R.color.XXX 尺寸资源:dimens.xml,x

前端编程提高之旅(十五)----jquery事件

HTML与js交互主要通过用户与浏览器操作页面时引发事件.文档或某些元素发生某些变化或操作时,浏览器会生成事件.jquery增加了事件处理能力.    jquery事件部分可以从以下五部分理解:    一.加载DOM函数    这里指的如下方法: $(document).ready(function(){ }) 相比于传统的window.onload方法,前者在执行时机与可否多次使用上区别于后者.    前者是在DOM完全就绪回调就会被调用,后者则是网页所有元素(包含关联文件)完全加载到浏览器后

前端编程提高之旅(十七)----jquery中表单、表格和ajax

从一个框架核心功能层面上说,实现了选择器.DOM操作.事件.动画,功能已经完备了.而任何框架写出了就是应用的,所以这篇涉及的表单与表格知识,虽在DOM操作中有所涉及,但更偏于实际项目中的应用技巧的使用.ajax部分的内容更是前端与后端交互的核心.    一.jQuery中的表单与表格应用    实际项目中,表单和表格分别扮演采集.提交用户输入的信息和显示列表的数据.在HTML中非常重要.下面是这部分知识导图:    1.表单    (1)单行文本框     单行文本框职能是获取用户输入的指定格式

前端编程提高之旅(十三)----jquery选择器

  Jquery代表javascript和query,即对javascript查询操作的类库,jquery是web前端界的事实标准.最近读<锋利的jquery>,发现这本书最大特点是,更深层的讨论一些jquery使用情境和优化方法,对于有一定jquery使用经验的开发者有独特价值.本篇算是乐帝读此书,对选择器和DOM操作加深理解的总结.    javascript自身包含三大弊端: 复杂的文档对象模型(DOM) 不一致的浏览器实现和便捷的开发 调试工具的缺乏    Jquery存在的意义就在于

前端编程提高之旅(二)----站点常见特效的jquery实现

最好的编程语言是逻辑,前端各种交互特效的实现多能够用jquery实现.特效能够纷飞.内在逻辑则基本不变.这一篇文章主要介绍jquery实现常见特效背后的逻辑.   1.通过类名获取元素集合    首先来看一个js原生代码不支持的方法.通过类来获取元素集合. document.getElementsByClassName=function(classname){ var retnode = []; var myclass = new RegExp('\\b'+classname+'\\b');//

前端编程提高之旅(十八)----移动端web流行交互技术方案研究

   在停止实习后,生活最大变化在于没有项目的压力,可以根据兴趣场景,探索技术实现.这个过程对于个人来说,动力自内而外,需求自上而下,都由个人把握.    生活在移动互联网井喷的今天,同时又关注前端技术,平常对微信端流行的交互(或者说玩法)有着特殊的敏感性.如果说之前接触MVC框架还是对单页面网站.CSS3前沿特效有一个概念的话,微信朋友圈及好友分享网页,则把国内网页构建的流行趋势,从幕后推向前台.    乐帝通过研究移动端web流行交互,构建起了一个初步可行的技术方案,用来实现单页面与DOM动