首页 > 语言 > JavaScript > 正文

jquery动画效果学习笔记(8种效果)

2024-05-06 16:25:05
字体:
来源:转载
供稿:网友

这篇文章分享了一份jquery动画效果学习笔记,针对jquery动画效果进行细致解析,对淡入淡出效果、滑动效果进行原理讲解,想要学好jquery动画效果,就耐心阅读本文,相信大家会有意想不到的收获。

1、元素的显示和隐藏

display:none; 隐藏

display:block; 显示

简单显示和隐藏方法

a) show() 显示

b) hide() 隐藏

c) toggle() 开关,显示则隐藏,隐藏则显示

 

 
  1. <script type="text/javascript"
  2. function f1(){ 
  3. //隐藏 
  4. $("div").hide();//display:none 
  5. //document.getElementById('id').style.display="none"; 
  6. function f2(){ 
  7. //显示 
  8. $("div").show();//display:block 
  9. function f3(){ 
  10. $("div").toggle(); 
  11. </script> 
  12. <style type="text/css"
  13. div {width:300px; height:200px; background-color:blue;} 
  14. </style> 
  15. <body> 
  16. <div>duck and dog</div> 
  17. <input type="button" value="隐藏" onclick="f1()" /> 
  18. <input type="button" value="显示" onclick="f2()" /> 
  19. <input type="button" value="开关效果" onclick="f3()" /> 
  20. </body> 

CSS支持两种方法显示和隐藏元素,即使用visibility或display样式,他们控制元素显示和隐藏的时候效果相同,但是结果却不同。

具体说明如下:

visibility 属性在隐藏元素的时候,同时会保存元素在文档流中的影响力,隐藏后元素的未知保持不变。该属性包括visible(默认)和hidden两个值。

display 隐藏后,隐藏的元素不再占用文档的位置。

2、滑动效果显示和隐藏

slideUp(speed[,callback]) 向上滑动元素并最终隐藏

slideDown(speed[,callback]) 向下滑动元素并最终显示

slideToggle(speed[,callback])

speed:设置效果的速度(slow(600)normal(400) fast(200) 时间(毫秒))

callback: 效果执行完毕之后自动调用的回调函数

 

 
  1. <script type="text/javascript"
  2. function f1(){ 
  3. //隐藏 
  4. $("div").slideUp(3000,function(){ 
  5. alert('我消失了,你能看到么'); 
  6. }); 
  7. function f2(){ 
  8. //显示 
  9. $("div").slideDown(3000,function(){ 
  10. alert('我又回来了'); 
  11. });//display:block 
  12. function f3(){ 
  13. $("div").slideToggle(1000); 
  14. $(function(){ 
  15. //气缸滑动效果 
  16. //setInterval("f3()",1000); 
  17. }); 
  18. </script> 
  19.  
  20. <style type="text/css"
  21. div {width:300px; height:200px; background-color:blue;} 
  22. </style> 
  23.  
  24.  
  25. <body> 
  26. <div>duck and dog</div> 
  27. <input type="button" value="隐藏" onclick="f1()" /> 
  28. <input type="button" value="显示" onclick="f2()" /> 
  29. <input type="button" value="开关效果" onclick="f3()" /> 
  30. </body> 

3、淡入淡出效果

让元素通过一定透明度变化,达到显示和隐藏的效果

fadeIn(speed, [callback])

fadeOut(speed, [callback])

fadeToggle(speed, [callback])开关效果

fadeTo(speed, opacity, [callback]) 把div设置一定透明度(0-1)0.3就是30%透明度

 

 
  1. <script type="text/javascript">  
  2. function f1(){ 
  3. //隐藏 
  4. $("div").fadeOut(4000); 
  5. function f2(){ 
  6. //显示 
  7. $("div").fadeIn(4000); 
  8. $("#two").fadeTo(2000,0.3); 
  9.  
  10. function f3(){ 
  11. $("div").fadeToggle(2000); 
  12.  
  13. </script> 
  14. <style type="text/css"
  15. div {width:300px; height:200px; background-color:blue;} 
  16. </style> 
  17. <body> 
  18. <div id = "two">duck and dog</div> 
  19.  
  20. <input type="button" value="隐藏" onclick="f1()" /> 
  21. <input type="button" value="显示" onclick="f2()" /> 
  22. <input type="button" value="开关效果" onclick="f3()" /> 
  23. </body> 

设置透明度,div的透明度是30%:

4、动画效果底层方法animate()

show() hide() 等等动画效果内部都是执行animate()方法

 

 
  1. $().animate(css效果参数[,时间][,回调函数]); 

css()等一般jquery方法执行完毕之后会返回当前jquery对象,因此jquery的许多方法可以链式调用。

 

 
  1. <script type="text/javascript"
  2. function f1(){ 
  3. //文字大小、文字粗体、div本身宽度和高度 
  4. //font-size background-color color 
  5.  
  6. console.log($("div")); 
  7. //jquery对象调用完毕css方法本身还是一个jquery对象 
  8. //说明css方法执行完毕有return this关键字 
  9. console.log($("div").css('font-weight','bold').css("background-color",'pink'));  
  10.  
  11. var jn = {'font-size':'30px',width:'400px',height:'300px'}; 
  12. $("div").css('font-weight',"bold").css("background-color","pink").css("color","white").animate(jn,2000); 
  13.  
  14. //$("div").animate(jn,2000); 
  15.  
  16. </script> 
  17.  
  18. <style type="text/css"
  19. div {width:300px; height:200px; background-color:blue; } 
  20. </style> 
  21.  
  22. <body> 
  23. <div>duck and dog</div> 
  24. <input type="button" value="设置" onclick="f1()" /> 
  25. </body> 

5、累加累减动画

如果动画一次设定left:500 ,第一次单击div会左移500像素,第二次单击就不会动了。累加累减就是连续动的,只需要将left:”500px”改成left:”+=500px”或者left:”-=500px”即可。

 

 
  1. (function(){  
  2. $("#panel").click(function(){  
  3. $(this).animate({left: "+=500px"}, 3000);  
  4. })  
  5. })</span>  

6、多重动画

1、同时执行多个动画

上面的例子只控制了left属性的变化,这回我们在控制left属性的时候同时控制元素高度变为200px

 

 
  1. $(function(){  
  2. $("#panel").click(function(){  
  3. $(this).animate({left: "500px",height:"200px"}, 3000);  
  4. })  
  5. }) 

2、顺序执行动画

上面例子中元素右移和放大高度两个动画是同时进行的。现在我们要实现先右移再放大高度,那很简单,只需要把上面的animate()方法拆开写成两个即可

 

 
  1. $(function(){  
  2. $("#panel").click(function(){  
  3. $(this).animate({left: "500px"},3000)  
  4. .animate({height:"200px"},1000);  
  5. })  
  6. })  

3、综合动画

接下来完成更复杂的动画。单击div元素后让他向右移动的同时增大他的高度,并将它的不透明度从50%切换到100%。然后再让它从上向下移动,同时它的宽度变大,当完成这

些效果后让它以淡出的方式隐藏掉。

 

 
  1. $(function(){  
  2. $("#panel").css("opacity",0.5);//设置不透明度  
  3. $("#panel").click(function(){  
  4. $(this).animate({left: "400px",height:"200px",opacity:"1"},3000)  
  5. .animate({top:"200px",width:"200px"},3000)  
  6. .fadeOut(1000);  
  7. })  
  8. }) 

7、动画回调函数

在上例中,如果想在最后一步切换css样式而不是隐藏元素。这我们就可以用到animate的第三个参数回调函数了

 

 
  1. $(function(){  
  2. $("#panel").css("opacity",0.5);//设置不透明度  
  3. $("#panel").click(function(){  
  4. $(this).animate({left: "400px",height:"200px",opacity:"1"},3000)  
  5. .animate({top:"200px",width:"200px"},3000,function(){$(this).css("border","5px solid blue")});  
  6.  
  7. })  
  8. })  

这样就把css方法加入到动画队列中了。

8、停止动画和判断是否处于动画状态

1、停止元素的动画

stop([clearQueue][,gotoEnd]) 两个都是可选参数,都是boolean类型

参数说明:

clearQueue:代表是否清空未执行完的动画队列

gotoEnd :代表是否将正在执行的动画跳到末状态

通过一个综合的示例就可以弄明白stop()方法的这两个参数了:

 

 
  1. <style type="text/css">  
  2. *{margin:0;padding:0;}  
  3. body { font-size: 13px; line-height: 130%; padding: 60px }  
  4. #panel { width: 60px; border: 1px solid #0050D0 ;height:22px;overflow:hidden;}  
  5. .head { padding: 5px; background: #96E555; cursor: pointer;width: 300px;}  
  6. .content { padding: 10px; text-indent: 2em; border-top: 1px solid #0050D0;display:block; width:280px;}  
  7. </style>  
  8. <script src="../../../scripts/jquery.js" type="text/javascript"></script>  
  9. <script type="text/javascript">  
  10. $(function(){  
  11. $("button:eq(0)").click(function () {  
  12. $("#panel")  
  13. .animate({height : "150" } , 2000 )  
  14. .animate({width : "300" } , 2000 )  
  15. .hide(3000)  
  16. .animate({height : "show" , width : "show" , opacity : "show" } , 2000 )  
  17. .animate({height : "500"} , 2000 );  
  18. });  
  19. $("button:eq(1)").click(function () {  
  20. $("#panel").stop();//停止当前动画,继续下一个动画  
  21. });  
  22. $("button:eq(2)").click(function () {  
  23. $("#panel").stop(true);//清除元素的所有动画  
  24. });  
  25. $("button:eq(3)").click(function () {  
  26. $("#panel").stop(false,true);//让当前动画直接到达末状态 ,继续下一个动画  
  27. });  
  28. $("button:eq(4)").click(function () {  
  29. $("#panel").stop(true,true);//清除元素的所有动画,让当前动画直接到达末状态  
  30. });  
  31.  
  32. })  
  33. </script>  
  34.  
  35. <body>  
  36. <button>开始一连串动画</button>  
  37. <button>stop()</button>  
  38. <button>stop(true)</button>  
  39. <button>stop(false,true)</button>  
  40. <button>stop(true,true)</button>  
  41. <div id="panel">  
  42. <h5 class="head">三国杀杀天下</h5>  
  43. <div class="content">  
  44. 夏侯惇的眼睛,陆逊的联营,郭嘉司马深深的基情  
  45. </div>  
  46. </div>  
  47. </body>  
  48. </html> 

2、判断元素是否处于动画状态

当使用animate()方法的时候,要避免动画的累积导致的动画与用户的行为不一致的现象。当用户快速在某个元素上执行animate()动画时,就会出现动画累积。

解决办法是判断元素是否正在处于动画状态,当不处于动画状态的时候,才为元素添加新的动画。

用法:

 

 
  1. if(!$(element).is(":animated")){  
  2. //添加新的动画  

通过本文对8种jquery动画效果的详细剖析,玩转jquery动画效果,希望大家喜欢这篇针对jquery动画效果进行全面介绍的文章。


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选