jQuery的动画特效

1.1 jQuery动画特效说明

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

jQuery中的动画效果主要有以下方法
1.显示和隐藏动画
2. 展开和收起动画
3. 淡入和淡出动画
4. 自定义动画

1.2 显示和隐藏动画

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

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

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <!--....-->
    <style>
        #demoID{
            width: 200px;
            height: 50px;
            background: red;
        }
    </style>
    <script src="jquery-3.1.1.js"></script>
</head>
<body>
<div id="demoID"></div>
<script>
    //控制标签显示或隐藏的方式(1)
    //document.getElementById("demoID").style.display = "none";
    //document.getElementById("demoID").style.display = "block";

    //控制标签显示或隐藏的方式(2)
    //$("#demoID").css("display","none");
    $("#demoID").css("display","block");
</script>
</body>
</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方法用来控制标签的显示或者是隐藏,内部的实现逻辑是同时改变标签的宽度、高度和透明度

1.3 展开和收起动画

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

展开和收起动画方法语法
slideDown(speed,callBack);
slideUp(speed,callBack)
slideToggle(speed,callBack)
方法解释
slideDown方法的功能是设置让指定标签的高度从顶部向底部增加,以呈现出一种展开的动画效果,元素的其他属性不会发生任何变化。
sldeUp方法的功能是设置让指定标签的高度从底部向顶部减小,仅仅改变标签的高度,其他的属性并不会改变。
slideToggle方法用来切换所选择元素的高度,如果当前标签的高度不为0,那么调用该方法后就会把标签的高度过渡为0,实现收起的效果,否则就实现展开的效果。
注意:无论是展开还是收起的动画方法,他们的动画效果都仅仅只会改变(增加或减小)标签的高度。
参数说明
第一个参数:动画执行的时间,同show方法。
第二个参数:动画执行完毕的回调函数,可以省略,同show方法。
代码示例

<html lang="en">
<head>
    <!--....-->
    <style>
        #demoID{
            width: 200px;
            height: 50px;
            background: red;
        }
    </style>
    <script src="jquery-3.1.1.js"></script>
</head>
<body>
<div id="demoID"></div>
<script>
    //控制标签显示或隐藏的方式(1)
    //document.getElementById("demoID").style.display = "none";
    //document.getElementById("demoID").style.display = "block";

    //控制标签显示或隐藏的方式(2)
    //$("#demoID").css("display","none");
    $("#demoID").css("display","block");
</script>
</body>
</html>

1.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)。
代码示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="JS/jquery-3.2.1.js"></script>
    <style>
        div{
            width: 400px;
            height: 200px;
            background: red;
        }
    </style>
</head>
<body>
<div>我是div</div>
<button>淡入</button>
<button>淡出</button>
<button>切换</button>
<button>惦记我</button>
<script>

    //fadeIn:淡入
    //fadeOut:淡出
    //fadeToggle切换
    //fadeTo:淡入淡出到...0.5

    $(function () {
        //01 获取页面中指定的按钮,添加点击事件
        $("button:eq(0)").click(function () {
            //02 点击按钮后,获取页面中的div标签,设置动画
            //第一个参数:速度
            //第二个参数:回调
            $("div").fadeIn(2000,function () {
                alert("显示完成");
            });
        })

        $("button:eq(1)").click(function () {
            $("div").fadeOut(1000,function () {
                alert("淡出")
            });
        })

        $("button:eq(2)").click(function () {
            $("div").fadeToggle();
        })

        $("button:eq(3)").click(function () {
            //第一个参数:速度
            //第二个参数:目标值
            //第三个参数:回调
            $("div").fadeTo(1000,0.5,function () {
                alert("执行动画完毕")
            });
        })
    })
</script>
</body>
</html>

1.5 自定义动画

jQuery框架中本身已经为我们封装好了一些简单的控制标签宽高、透明度相关的方法,如显示和隐藏、展开和收起、淡入和淡出,除了这些方法之外,jQuery还为我们提供了animate()方法,允许我们自定义动画效果,通过一些设置我们可以实现更加复杂的动画效果,
自定义动画的语法
animate(params,speed,easing,callBack)
参数说明:
第一个参数:params是一个对象。在该对象中以键值对的方式来要控制的属性样式和对应的值表示。
第二个参数:speed速度,可以是默认字符串中的某个(“slow” “normal” “fast”)或者是自定义的数字。
第三个参数:easing为动画插件使用的可选参数,用来控制动画的表现效果,通常有linear和swing等固定值。
第四个参数:动画执行完毕后的回调函数。
代码示例

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background: yellow;
        }
    </style>
</head>
<body>
<div>
</div>
<button>按钮</button>
<script src="js/jquery-3.2.1.js"></script>
<script>
    $(function () {
        $("button").click(function () {
            $("div").animate({
                width:"50px"
            })
                    .animate({
                        height:50
                    })
                    .delay(2000)
                    .animate({
                        height:300
                    })
                    .animate({
                        width:400
                    })
        })
    })
</script>
</body>
</html>

动画队列、动画停止和动画延迟
动画队列:如果某个标签身上要调用多个动画相关方法,即需要展示多个动画效果,那么所有的这些动画效果并不会同一时刻发生,而是需要在队列中排队,然后按照队列中动画效果的顺序依次展现。
动画停止:在执行动画的时候,可以通过stop()方法来停止动画。停止动画的语法为:
stop(clearQueue,gotoEnd)
方法和参数说明:
stop方法的功能是停止指定标签中正在执行的动画,其中第一个参数clearQueue为可选参数,传递一个布尔类型的值,表示是否停止正在执行的动画。第二个参数gotoEnd也是可选参数,传递一个布尔类型的值,表示是否立即完成正在执行的动画。
动画延迟:设置一个延时的值来推迟后续队列中动画的执行,可以传递延迟的具体时间,单位为毫秒。
代码示例01

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 50px;
            height: 50px;
            background: green;
        }
    </style>
</head>
<body>
<div>
</div>
<button>按钮</button>
<script src="js/jquery-3.2.1.js"></script>
<script>
    $(function () {

        //01 当页面加载完毕就执行动画效果
        $("div").animate({
                    width:"400px"
                },2000)
                .animate({
                    height:200
                },1000)
                .delay(1000)
                .animate({
                    height:50
                })
                .animate({
                    width:50
                })

        //02 当点击按钮的时候停止动画
        $("button").click(function () {

            //01 没有传递参数:结束当前的动画,继续执行后面的动画
            //$("div").stop();

            //02 传递1参数:
            // true:所有的动画全部结束
            // false:结束当前的动画,继续执行后面的动画
            //$("div").stop(true);
            //$("div").stop(false);

            //03 传递2参数:
            //true true : 立刻结束到达当前动画的终点,后面的不再执行
            //true false:所有的动画全部结束
            //false false:结束当前的动画,继续执行后面的动画
            //false true : 立刻结束到达当前动画的终点,后面的继续执行
            //$("div").stop(true,true);
            //$("div").stop(true,false);
            //$("div").stop(false,false);
            $("div").stop(false,true);
        })
    })
</script>
</body>
</html>

代码示例02

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 50px;
            height: 50px;
            background: green;
        }
    </style>
</head>
<body>
<div>
</div>
<button>按钮</button>
<script src="js/jquery-3.2.1.js"></script>
<script>
    $(function () {

        //01 当页面加载完毕就执行动画效果
        $("div").animate({
                    width:"400px"
                },2000)
                .animate({
                    height:200
                },1000)
                .delay(1000)
                .animate({
                    height:50
                })
                .animate({
                    width:50
                })

        //02 当点击按钮的时候停止动画
        $("button").click(function () {

            //01 没有传递参数:结束当前的动画,继续执行后面的动画
            //$("div").stop();

            //02 传递1参数:
            // true:所有的动画全部结束
            // false:结束当前的动画,继续执行后面的动画
            //$("div").stop(true);
            //$("div").stop(false);

            //03 传递2参数:
            //true true : 立刻结束到达当前动画的终点,后面的不再执行
            //true false:所有的动画全部结束
            //false false:结束当前的动画,继续执行后面的动画
            //false true : 立刻结束到达当前动画的终点,后面的继续执行
            //$("div").stop(true,true);
            //$("div").stop(true,false);
            //$("div").stop(false,false);
            $("div").stop(false,true);
        })
    })
</script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 警告请使用 document.write() 仅仅向文档输出写内容。如果在文档已完成加载后执行 document....
    hx永恒之恋阅读 2,847评论 3 104
  • 通过jQuery,您可以选取(查询,query)HTML元素,并对它们执行“操作”(actions)。 jQuer...
    枇杷树8824阅读 655评论 0 3
  • 隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性。但是通过css...
    老夫撩发少年狂阅读 1,088评论 0 2
  • jQuery 安装 把 jQuery 添加到您的网页 如需使用 jQuery,您需要下载 jQuery 库(会在下...
    Clover园阅读 293评论 0 0
  • 总是需要有个声音告诉自己:“为自己而活,没有什么不对的!”
    福丫阅读 265评论 6 1