jQuery动画分为三个部分
- jquery内置动画
- jquery非内置动画
- jquery动画的设置
jquery内置动画
隐藏显示
在 jQuery 中可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素,以及使用 toggle() 方法能够切换 hide() 和 show() 方法。
括号中为动画持续的时间,单位是毫秒
括号中还可以加上回调函数
//隐藏div $("#btn1").click(function(){ $("#box").hide(1000); }) //显示div $("#btn2").click(function(){ $("#box").show(1000); }) //隐藏/显示div $("#btn3").click(function(){ $("#box").toggle(1000); })
效果如下:
jquery中的动画还支持连缀
//持续动画,1s隐藏之后,2s显示,然后改变背景色为黄色 $("#btn1").click(function(){ $("#box").hide(1000).show(2000,function(){ $("#box").css("background","yellow") }) })
效果如下:
下拉与上拉
jQuery 滑动方法可使元素上下滑动。
- slideDown();
- slideUp();
- slideToggle();
//上拉 $("#btn1").click(function(){ $("#box").slideUp(1000); }) //下拉 $("#btn2").click(function(){ $("#box").slideDown(1000); }) //上拉/下拉 $("#btn3").click(function(){ $("#box").slideToggle(1000); })
效果如下:
淡入淡出
jq当中,提供了四个方法实现淡入淡出,如下:
- fadeIn() 淡入隐藏元素
- fadeOut() 淡出可见元素
- fadeToggle() 淡入淡出效果切换
- fadeTo() 渐变到给定透明度 参数: speed,opacity(0-1),callback
//淡出 $("#btn1").click(function(){ $("#box").fadeOut(1000); }) //淡入 $("#btn2").click(function(){ $("#box").fadeIn(1000); }) //淡入/淡出 $("#btn3").click(function(){ $("#box").fadeToggle(); }) //透明度0.5 $("#btn4").click(function(){ $("#box").fadeTo(1000,0.5); })
效果如下:
jQuery的非内置动画
jq当中可以通过animate()来实现动画效果,语法如下:
$(selector).animate({params},speed,callback);
//向右移动200px $("#btn").click(function(){ $(".box").animate({ left:200 }) })
效果如下:
animate动画还可以连续设置
$("#btn").click(function(){ $(".box").animate({ left:200 }).animate({ top:200 }).animate({ left:0 }).animate({ top:0 }) })
效果如下:
通过动画组合可以实现多种动画,例如:div向右上收缩
$(".box").animate({ 0, height:0, left:100, top:0 })
效果如下:
停止动画
我们可以通过stop()方法停止动画。
语法如下:
$(selector).stop(stopAll,goToEnd);
jQuery stop() 方法用于----在动画完成之前停止动画或效果。
stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。
stop():两个参数,都是布尔值,默认为false
- 动画队列:false:不操作;true:清空了
- 当前动画:false:立即停止;true:立即到终点
默认地,stop() 会清除在被选元素上指定的当前动画。
$("#btn").click(function(){ $(".box").animate({ left:200 },2000).animate({ top:200 },2000).animate({ left:0 },2000).animate({ top:0 },2000) }) $("#btn2").click(function(){ $(".box").stop(false,true); })
效果如下
使用jquery实现二级菜单doem
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> ul ul{display: none} </style> </head> <body> <ul class="nav"> <li> <span>一级菜单</span> <ul> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li> <span>一级菜单</span> <ul> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li> <span>一级菜单</span> <ul> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> <li> <span>一级菜单</span> <ul> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> <li>二级菜单</li> </ul> </li> </ul> </body> <script src="../jquery.js"></script> <script> $(".nav").children("li").mouseover(function(){ $(this).children("ul").stop().show(500) .parent().siblings().children("ul").stop().hide(500); }) // 动画开启之前,先停止 // 计时器开启之前,先清除 // .parent()父元素选择器 // .siblings()除了当前的所有同级(兄弟) </script> </html>
效果如下: