• jQuery系列 第五章 jQuery框架动画特效


    第五章 jQuery框架动画特效

    5.1 jQuery动画特效说明

    jQuery框架中为我们封装了众多的动画和特效方法,只需要调用对应的动画方法传递合适的参数,就能够方便的实现一些炫酷的效果,而且jQuery框架还支持自定义各种动画效果。

    jQuery中的动画效果主要有以下方法

    ① 显示和隐藏动画
    ② 展开和收起动画
    ③ 淡入和淡出动画
    ④ 自定义动画效果


    5.2 显示和隐藏动画

    jQuery框架中为我们提供了专门的方法来控制让标签显示或者是隐藏。标签的显示和隐藏在开发中相对来说是比较常见的操作,如果使用原生的JavaScript代码来控制标签的显示或者是隐藏,那么我们主要通过控制该标签的display属性值来实现。

    jQuery中控制标签显示和隐藏的动画方法

    ① show() 控制让标签显示的动画方法
    ② hide() 控制让标签隐藏的动画方法
    ③ toggle()控制让标签显示|隐藏效果切换的动画方法

    ex:以原生的方法来控制标签的显示或隐藏

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <!--....-->
     5     <style>
     6         #demoID{
     7             width: 200px;
     8             height: 50px;
     9             background: red;
    10         }
    11     </style>
    12     <script src="jquery-3.1.1.js"></script>
    13 </head>
    14 <body>
    15 <div id="demoID"></div>
    16 <script>
    17     //控制标签显示或隐藏的方式(1)
    18     //document.getElementById("demoID").style.display = "none";
    19     //document.getElementById("demoID").style.display = "block";
    20     //控制标签显示或隐藏的方式(2)
    21     //$("#demoID").css("display","none");
    22     $("#demoID").css("display","block");
    23 </script>
    24 </body>
    25 </html>

    显示和隐藏动画方法语法

    $("selector").show(speed,callBack)
    $("selector").hide(speed,callBack)

    参数说明:

    第一个参数:可选的参数。speed表示执行动画的速度,该速度可以使用系统默认提供的值,也可以自己以数字的形式传入。

    系统默认提供的值有:“slow”、“normal”、“fast”,对应的速度分别为0.6秒、0.4秒和0.2秒。

    自己以数字的形式传递则:传递如1000|3000类似的值,单位为毫秒,如果传递1000表示动画的执行速度为1秒。

    第二个参数:可选的参数。callBack为动画完成时执行的回调函数,该函数每个元素执行一次。

    切换动画方法语法

    调用方式[1] => $("selector").toggle()
    调用方式[2] => $("selector").toggle(speed,callBack)

    方法参数说明:

    (1)调用方式[1],不传递参数。切换当前元素(标签)的可见状态,如果当前元素的状态为不可见,则切换为可见,如果当前元素的状态为可见,则切换为不可见。

    (2)调用方式[2],第一个可选的参数为动画执行的速度,第二个可选的参数为动画执行完后执行的回调函数。

    总结

    show方法和hide方法用来控制标签的显示或者是隐藏,内部的实现逻辑是同时改变标签的宽度、高度和透明度


    5.3 展开和收起动画

    jQuery框架中,为我们提供实现滑动效果的方法,slideDown和slideUp方法分别可以用来控制标签展开和收起。

    展开和收起动画方法语法

    slideDown(speed,callBack);
    slideUp(speed,callBack)
    slideToggle(speed,callBack)

    方法解释

    slideDown方法的功能是设置让指定标签的高度从顶部向底部增加,以呈现出一种展开的动画效果,元素的其他属性不会发生任何变化。

    sldeUp方法的功能是设置让指定标签的高度从底部向顶部减小,仅仅改变标签的高度,其他的属性并不会改变。

    slideToggle方法用来切换所选择元素的高度,如果当前标签的高度不为0,那么调用该方法后就会把标签的高度过渡为0,实现收起的效果,否则就实现展开的效果。

    注意:无论是展开还是收起的动画方法,他们的动画效果都仅仅只会改变(增加或减小)标签的高度。

    参数说明

    第一个参数:动画执行的时间,同show方法。
    第二个参数:动画执行完毕的回调函数,可以省略,同show方法。

    代码示例

     1 <body>
     2 <div>我是div</div>
     3 <button>展开</button>
     4 <button>收起</button>
     5 <button>切换</button>
     6 <script>
     7     $(function () {
     8         $("button").eq(0).click(function () {
     9             $("div").slideDown(2000,function () {
    10                 console.log("展开");
    11             });
    12         })
    13         $("button").eq(1).click(function () {
    14             $("div").slideUp(2000);
    15         })
    16         $("button").eq(2).click(function () {
    17             $("div").slideToggle(1000,function () {
    18                 alert("切换动画指定完毕")
    19             });
    20         })
    21     })
    22 </script>
    23 </body>

    5.4 淡入和淡出动画

    jQuery框架中还提供了淡入和淡出的动画方法,这两个方法分别是fadeIn和fadeOut。

    淡入和淡出动画方法语法

    fadeIn(speed,callBack);
    fadeOut(speed,callBack)
    fadeToggle(speed,callBack)
    fadeTo(speed,opactity,callBack)

    方法说明:

    淡入淡出方法的内部实现原理是控制标签的透明度,通过改变选中标签的透明度来实现淡入和淡出的动画效果,并不修改其他的属性。

    fadeIn()方法的作用是淡入动画,即改变标签的透明度让标签慢慢的显示出来。

    fadeOut()方法的作用是淡出动画,即改变标签的透明度让标签慢慢的消失(透明度为0)。

    fadeToggle()方法的作用是切换动画,如果当前标签的透明度不为0,那么就执行淡出动画,否则就执行淡入动画。

    fadeTo()方法的作用是淡入到,即使用动画效果实现将标签的透明度设置为指定的值。

    备注:标签透明度的取值范围为0.0~1.0。

    参数说明:

    speed参数:动画执行的速度,单位为毫秒。
    callBack参数:动画执行完毕的回调函数,可选。
    opacity参数:指定的标签透明度(0.0~1.0)。

    代码示例

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <script src="JS/jquery-3.2.1.js"></script>
     7     <style>
     8         div{
     9             width: 400px;
    10             height: 200px;
    11             background: red;
    12         }
    13     </style>
    14 </head>
    15 <body>
    16 <div>我是div</div>
    17 <button>淡入</button>
    18 <button>淡出</button>
    19 <button>切换</button>
    20 <button>惦记我</button>
    21 <script>
    22     //fadeIn:淡入
    23     //fadeOut:淡出
    24     //fadeToggle切换
    25     //fadeTo:淡入淡出到...0.5
    26     $(function () {
    27         //01 获取页面中指定的按钮,添加点击事件
    28         $("button:eq(0)").click(function () {
    29             //02 点击按钮后,获取页面中的div标签,设置动画
    30             //第一个参数:速度
    31             //第二个参数:回调
    32             $("div").fadeIn(2000,function () {
    33                 alert("显示完成");
    34             });
    35         })
    36         $("button:eq(1)").click(function () {
    37             $("div").fadeOut(1000,function () {
    38                 alert("淡出")
    39             });
    40         })
    41         $("button:eq(2)").click(function () {
    42             $("div").fadeToggle();
    43         })
    44         $("button:eq(3)").click(function () {
    45             //第一个参数:速度
    46             //第二个参数:目标值
    47             //第三个参数:回调
    48             $("div").fadeTo(1000,0.5,function () {
    49                 alert("执行动画完毕")
    50             });
    51         })
    52     })
    53 </script>
    54 </body>
    55 </html>

    5.5 自定义动画

    jQuery框架中本身已经为我们封装好了一些简单的控制标签宽高、透明度相关的方法,如显示和隐藏、展开和收起、淡入和淡出,除了这些方法之外,jQuery还为我们提供了animate()方法,允许我们自定义动画效果,通过一些设置我们可以实现更加复杂的动画效果,

    自定义动画的语法

    animate(params,speed,easing,callBack)

    参数说明:
    第一个参数:params是一个对象。在该对象中以键值对的方式来要控制的属性样式和对应的值表示。

    第二个参数:speed速度,可以是默认字符串中的某个(“slow” “normal” “fast”)或者是自定义的数字。

    第三个参数:easing为动画插件使用的可选参数,用来控制动画的表现效果,通常有linear和swing等固定值。

    第四个参数:动画执行完毕后的回调函数。

    代码示例

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <style>
     7         div{
     8             width: 200px;
     9             height: 50px;
    10             background: red;
    11         }
    12     </style>
    13 </head>
    14 <body>
    15 <!--
    16     animate({},timer,fn)
    17     第一个参数:目标对象
    18     第二个参数:速度
    19     第三个参数:回调函数
    20 -->
    21 <div>我是个好人</div>
    22 <button>
    23     喜欢我就点我吧
    24 </button>
    25 <button>
    26     喜欢我就点我吧2
    27 </button>
    28 <script src="js/jquery-3.2.1.js"></script>
    29 <script>
    30     $(function () {
    31         $("button:eq(0)").click(function () {
    32             $("div").animate({
    33                 "+=50",
    34                 height:"+=100"
    35              },1000);
    36         })
    37         $("button:eq(1)").click(function () {
    38             //01 直接设置目标值:速度和回调函数可以被省略
    39             //            $("div").animate({
    40 //                400,
    41 //                height:100
    42 //            },2000,function () {
    43 //                alert("执行完毕");
    44 //            })
    45             //02 第二种用法
    46             //            $("div").animate({
    47             //                "+=50",
    48             //                height:"+=100"
    49             //            },1000);
    50             //03 动画切换(如果有值那么就设置为0,否则就恢复)
    51             $("div").animate({
    52                 "toggle",
    53                 height:"+=100"
    54             },1000);
    55         })
    56     })
    57 </script>
    58 </body>
    59 </html>

    动画队列、动画停止和动画延迟

    动画队列:如果某个标签身上要调用多个动画相关方法,即需要展示多个动画效果,那么所有的这些动画效果并不会同一时刻发生,而是需要在队列中排队,然后按照队列中动画效果的顺序依次展现。

    动画停止:在执行动画的时候,可以通过stop()方法来停止动画。停止动画的语法为:

    stop(clearQueue,gotoEnd)

    方法和参数说明:

    stop方法的功能是停止指定标签中正在执行的动画,其中第一个参数clearQueue为可选参数,传递一个布尔类型的值,表示是否停止正在执行的动画。第二个参数gotoEnd也是可选参数,传递一个布尔类型的值,表示是否立即完成正在执行的动画。

    动画延迟:设置一个延时的值来推迟后续队列中动画的执行,可以传递延迟的具体时间,单位为毫秒。

    代码示例01

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <style>
     7         div{
     8             width: 200px;
     9             height: 200px;
    10             background: yellow;
    11         }
    12     </style>
    13 </head>
    14 <body>
    15 <div>
    16 </div>
    17 <button>按钮</button>
    18 <script src="js/jquery-3.2.1.js"></script>
    19 <script>
    20     $(function () {
    21         $("button").click(function () {
    22             $("div").animate({
    23                 "50px"
    24             })
    25                     .animate({
    26                         height:50
    27                     })
    28                     .delay(2000)
    29                     .animate({
    30                         height:300
    31                     })
    32                     .animate({
    33                         400
    34                     })
    35         })
    36     })
    37 </script>
    38 </body>
    39 </html>

    代码示例02

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <style>
     7         div{
     8             width: 50px;
     9             height: 50px;
    10             background: green;
    11         }
    12     </style>
    13 </head>
    14 <body>
    15 <div>
    16 </div>
    17 <button>按钮</button>
    18 <script src="js/jquery-3.2.1.js"></script>
    19 <script>
    20     $(function () {
    21         //01 当页面加载完毕就执行动画效果
    22         $("div").animate({
    23                     "400px"
    24                 },2000)
    25                 .animate({
    26                     height:200
    27                 },1000)
    28                 .delay(1000)
    29                 .animate({
    30                     height:50
    31                 })
    32                 .animate({
    33                     50
    34                 })
    35         //02 当点击按钮的时候停止动画
    36         $("button").click(function () {
    37             //01 没有传递参数:结束当前的动画,继续执行后面的动画
    38             //$("div").stop();
    39             //02 传递1参数:
    40             // true:所有的动画全部结束
    41             // false:结束当前的动画,继续执行后面的动画
    42             //$("div").stop(true);
    43             //$("div").stop(false);
    44             //03 传递2参数:
    45             //true true : 立刻结束到达当前动画的终点,后面的不再执行
    46             //true false:所有的动画全部结束
    47             //false false:结束当前的动画,继续执行后面的动画
    48             //false true : 立刻结束到达当前动画的终点,后面的继续执行
    49             //$("div").stop(true,true);
    50             //$("div").stop(true,false);
    51             //$("div").stop(false,false);
    52             $("div").stop(false,true);
    53         })
    54     })
    55 </script>
    56 </body>
    57 </html>
  • 相关阅读:
    Codeforces Round #422 (Div. 2) D. My pretty girl Noora 数学
    Codeforces Round #422 (Div. 2) C. Hacker, pack your bags! 排序,贪心
    Codeforces Round #422 (Div. 2) B. Crossword solving 枚举
    XJTUOJ wmq的A×B Problem FFT/NTT
    BZOJ 3527: [Zjoi2014]力 FFT
    Educational Codeforces Round 9 E. Thief in a Shop NTT
    focal loss for dense object detection
    国内敏捷项目协作工具亲测推荐
    Leangoo背景更新-看板背景任你选!!!
    Leangoo新功能-卡片ID
  • 原文地址:https://www.cnblogs.com/wendingding/p/8856708.html
Copyright © 2020-2023  润新知