jQuery之动画效果
通过一段代码来展示jQuery的动画效果。
1.show&hide
<script type="text/javascript"> $(function(){ $("#panel h5.head").toggle(function(){ $(this).next().hide(); },function(){ $(this).next().show(); }) }) </script>
html代码部分:
<body> <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> </body>
toggle()
用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。
如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。
2.show&hide带时间,可以加入一个时间参数
<script type="text/javascript"> $(function(){ $("#panel h5.head").toggle(function(){ $(this).next().hide(600); },function(){ $(this).next().show(600); }) }) </script>
3.fadeOut&fadeIn 注意大小写,javascript是区分大小写的。
fadeOut()通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数。
fadeIn()通过不透明度的变化来实现所有匹配元素的淡入效果,并在动画完成后可选地触发一个回调函数。
<script type="text/javascript"> $(function(){ $("#panel h5.head").toggle(function(){ $(this).next().fadeOut(); },function(){ $(this).next().fadeIn(); }) }) </script>
4.slideUp&slideDown
slideUp()通过高度变化(向上减小)来动态地显示所有匹配的元素,在显示完成后可选地触发一个回调函数。
slideDown()通过高度变化(向下增大)来动态地显示所有匹配的元素,在显示完成后可选地触发一个回调函数。
<script type="text/javascript"> $(function(){ $("#panel h5.head").toggle(function(){ $(this).next().slideUp(); },function(){ $(this).next().slideDown(); }) }) </script>
5.animate简单应用
<script type="text/javascript"> $(function(){ $("#panel").click(function(){ //css中div必须设置为position:relative。才有效果。 $(this).animate({left: "500px"}, 3000); }) }) </script>
点击panel,会向右移动500px,时间为3秒钟。这其实是动态的调整它的位置。这要结合css来实现。因为只有position设为了relative,left属性才会有效。
6.animate多重动画
<script type="text/javascript"> $(function(){ $("#panel").click(function(){ $(this).animate({left: "500px",height:"200px"}, 3000); }) }) </script>
这段代码的意思,是使panel向右移动的同时,高度变为200px。这里用了两个参数。
<script type="text/javascript"> $(function(){ $("#panel").click(function(){ $(this).animate({left: "500px"}, 3000) .animate({height: "200px"}, 3000); }) }) </script>
这段代码与上面有所不同,它不是同时变化的,它是由先后顺序的,先是panel向右移动500px,然后高度变为200px。
<script type="text/javascript"> $(function(){ $("#panel").css("opacity", "0.5");//设置透明度 $("#panel").click(function(){ $(this).animate({left: "400px", height:"200px" ,opacity: "1"}, 3000) .animate({top: "200px" , width :"200px"}, 3000 ) .fadeOut("slow"); }); }); </script>
这段代码更为复杂一点。先是通过css方法设置panel的透明度为0.5,也就是半透明。然后是先让panel向右移动400px,高度变为200px,透明度变为1,也就是不透明。然后再向下移动200px,宽度变为200px,最后慢慢的淡出。fadeOut("slow")就是淡出的意思。这里的参数可以是数字表时间,也可以是字符串‘slow’,‘fast’表快慢。
<script type="text/javascript"> $(function(){ $("#panel").css("opacity", "0.5");//设置不透明度 $("#panel").click(function(){ $(this).animate({left: "400px", height:"200px" ,opacity: "1"}, 3000) .animate({top: "200px" , width :"200px"}, 3000 ) .css("border","5px solid blue"); }); }); </script>
这段代码最后有一段css效果。它并不是最后执行的。也就是它并没有排队,从一开始就是border为5px solid blue的效果。可以调整代码如下:
<script type="text/javascript"> $(function(){ $("#panel").css("opacity", "0.5");//设置不透明度 $("#panel").click(function(){ $(this).animate({left: "400px", height:"200px" ,opacity: "1"}, 3000) .animate({top: "200px" , width :"200px"}, 3000 ,function(){ $(this).css("border","5px solid blue"); }) }); }); </script>
animate(params,[speed],[easing],[fn])。animate最后一个参数是一个函数,它表示等动画执行完毕执行的动作。在这个函数中,设置css就可以实现css的最后执行。
7.stop
stop() 方法停止当前正在运行的动画。
<script type="text/javascript"> $(function(){ $("#panel").hover(function() { $(this).animate({height : "150",width : "300"} , 200 ); },function() { $(this).animate({height : "22",width : "60" } , 300 ); }); }); </script>
这段代码表示当鼠标浮于panel之上时,会让高度和宽度变大。当鼠标离开后,高度宽度变小。如果鼠标快速的移动移出就会有一个问题。就是它会一遍一遍的执行动作,直到动作完成。有一定的滞后效应。如何避免这一滞后效应呢?
我们可以通过stop() 方法。代码如下:
<script type="text/javascript"> $(function(){ $("#panel").hover(function() { $(this).stop().animate({height : "150",width : "300"} , 200 ); },function() { $(this).stop().animate({height : "22",width : "60" } , 300 ); }); }); </script>
也就是在执行动作之前,先结束上一个动作,这样就能避免快速移动移出后的滞后效果。
stop([clearQueue],[jumpToEnd])
clearQueue:如果设置成true,则清空队列。可以立即结束动画。
jumpToEnd:如果设置成true,则完成队列。可以立即完成动画。
8.还有一些连在一起的动作。
<script type="text/javascript"> $(function(){ $("#panel h5.head").click(function(){ $(this).next().toggle(); }) }) </script>
toggle()切换消失与出现
<script type="text/javascript"> $(function(){ $("#panel h5.head").click(function(){ $(this).next().slideToggle(); }) }) </script>
slideToggle()切换上下帘效果
<script type="text/javascript"> $(function(){ $("#panel h5.head").click(function(){ $(this).next().fadeTo(600, 0.2); }) }) </script>
fadeTo()把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数。
9.animate方法模仿各种效果。
<script type="text/javascript"> $(function(){ $("button:eq(0)").click(function () { $("div.content").hide().animate({ opacity : "1" } );//隐藏元素并取消透明度 }); $("button:eq(1)").click(function () { $("div.content").animate({height : "show" , width : "show" , opacity : "show" } , 600 );//用animate仿show(),原理就是高、宽、透明度都显示 }); $("button:eq(2)").click(function () { $("div.content").animate({height : "show" } , 600 );//用animate仿slideDown() }); $("button:eq(3)").click(function () { $("div.content").animate({ opacity : "show" } , 600 );//用animate仿fadeIn() }); $("button:eq(4)").click(function () { $("div.content").animate({ opacity : "0.2" } , 600 );//用animate仿fadeTo() }); }) </script>