第 7 章 jQuery 动画特效

调用 show() 和 hide() 方法显示和隐藏元素

show()hide()方法用于显示或隐藏页面中的元素,它的调用格式分别为:

$(selector).hide(speed,[callback]) 和 $(selector).show(speed,[callback])

参数 speed 设置隐藏或显示时的速度值,可为"slow"、"fast"或毫秒数值,可选项参数 callback 为隐藏或显示动作执行完成后调用的函数名。

例如,在页面中,通过点击"显示"和"隐藏"两个按钮来控制图片元素的显示或隐藏状态,如下图所示:

在浏览器中显示的效果:

从图中可以看出,点击"显示"按钮时,可以将图片元素显示在页面中,点击"隐藏"按钮时,则将图片元素隐藏起来。

<body>
        <h3>使用show()和hide()方法显示和隐藏元素</h3>
        ` <div> `
            <h4>我喜欢吃的水果</h4>
            <ul>
                <li>苹果</li>
                <li>甘桔</li>
                <li>梨</li>
            </ul>
            <input id="hidval" type="hidden" value="0"/>
        </div>
        
        <script type="text/javascript">
            $(function () {
                $("h4").bind("click", function () {
                    if ($("#hidval").val() == 0) {
                        $("ul").show();
                        $("#hidval").val(1);
                    } else {
                        $("ul").hide();
                        $("#hidval").val(0);
                    }
                });
            });
        </script>
    </body>

动画效果的 show() 和 hide() 方法

在上一小节中,调用show()hide()方法仅是实现的元素的显示和隐藏功能,如果在这些方法中增加"speed"参数可以实现动画效果的显示与隐藏,同时,如果添加了方法的回调函数,它将在显示或隐藏执行成功后被调用。

例如,以动画的方式显示或隐藏页面中的图片,同时,当显示或隐藏完成时,对应的按钮状态将变为不可用,如下图所示:

在浏览器中显示的效果:

从图中可以看出,当以动画方式显示或隐藏图片时,图片在显示或隐藏过程中,则以动画效果按"speed"参数设置数字执行,完成后,调用回调函数中的代码。

<body>
        <h3>show()和hide()方法动画方式显示和隐藏元素</h3>
        ` <div> `
            <h4>我喜欢吃的水果</h4>
            <ul>
                <li>苹果</li>
                <li>甘桔</li>
                <li>梨</li>
            </ul>
            <input id="hidval" type="hidden" value="0"/>
        </div>
        
        <script type="text/javascript">
            $(function () {
                $("h4").bind("click", function () {
                    if ($("#hidval").val() == 0) {
                        $("ul").show("slow", function(){
                            $("#hidval").val(1);
                        })
                    } else {
                        $("ul").hide("fast", function(){
                            $("#hidval").val(0);
                        })
                    }
                })
            });
        </script>
    </body>

调用 toggle() 方法实现动画切换效果

调用toggle()方法可以很容易做到隐藏显示效果,即如果元素处于显示状态,调用该方法则隐藏该元素,反之,则显示该元素,它的调用格式是:

$(selector).toggle(speed,[callback])

其中 speed 参数为动画效果时的速度值,可以为数字,单位为毫秒,也可是"fast"、"slow"字符,可选项参数 callback 为方法执行成功后回调的函数名称。

例如,调用toggle()方法以动画的效果显示和隐藏图片元素,如下图所示:

在浏览器中显示的效果:

从图中可以看出,当按钮显示内容为"隐藏"时,点击该按钮,将调用toggle()方法以动画的方式隐藏图片元素,隐藏成功后,按钮显示的内容变为"显示"。

使用 slideUp() 和 slideDown() 方法的滑动效果

可以使用slideUp()slideDown()方法在页面中滑动元素,前者用于向上滑动元素,后者用于向下滑动元素,它们的调用方法分别为:

$(selector).slideUp(speed,[callback]) 和 $(selector).slideDown(speed,[callback])

其中 speed 参数为滑动时的速度,单位是毫秒,可选项参数 callback 为滑动成功后执行的回调函数名。

要注意的是:slideDown()仅适用于被隐藏的元素;slideup()则相反。

例如,调用slideUp()slideDown()方法实现页面中元素的向上和向下的滑动效果,如下图所示:

在浏览器中显示的效果:

<body>
        <h3>使用slideUp()和slideDown()方法的滑动效果</h3>
        <div>
            <h4>我喜欢吃的水果</h4>
            <ul>
                <li>苹果</li>
                <li>甘桔</li>
                <li>梨</li>
            </ul>
            <input id="hidval" type="hidden" value="0"/>
        </div>
        
        <script type="text/javascript">
            $(function () {
                $("h4").bind("click", function () {
                    if ($("#hidval").val() == 0) {
                        $("ul").slideUp("slow", function(){
                            $("#hidval").val(1);
                        })
                    } else {
                        $("ul").slideDown("slow", function(){
                            $("#hidval").val(0);
                        })
                    }
                })
            });
        </script>
    </body>

使用 slideToggle() 方法实现图片"变脸"效果

使用slideToggle()方法可以切换slideUp()slideDown(),即调用该方法时,如果元素已向上滑动,则元素自动向下滑动,反之,则元素自动向上滑动,格式为:

$(selector).slideToggle(speed,[callback])

其中 speed 参数为动画效果时的速度值,可以为数字,单位为毫秒,也可是"fast"、"slow"字符,可选项参数 callback 为方法执行成功后回调的函数名称。

例如,在页面中,使用slideToggle()方法实现图片"变脸"效果,如下图所示:

在浏览器中显示的效果:

从图中可以看出,当点击第一张图片时,向上滑动收起该图片,当收起完成时,触发回调函数,调用第二张图片的slideToggle()方法,向下滑动显示第二张图片。

<body>
        <h3>使用slideToggle()方法切换滑动效果</h3>
        <div>
            <h4>
               <span class="fl">我喜欢吃的水果</span>
               <span class="fr" id="spnTip">向下滑</span></h4>
            <ul>
                <li>苹果</li>
                <li>甘桔</li>
                <li>梨</li>
            </ul>
            <input id="hidval" type="hidden" value="0"/>
        </div>
        
        <script type="text/javascript">
            $(function () {
                var $spn = $("#spnTip");
                $("h4").bind("click", function () {
                    $("ul").slideToggle("slow", function(){
               $spn.html() == "向下滑" ? $spn.html("向上滑") : $spn.html("向下滑");
                    })
                })
            });
        </script>
    </body>

使用 fadeIn() 与 fadeOut() 方法实现淡入淡出效果

fadeIn()fadeOut()方法可以实现元素的淡入淡出效果,前者淡入隐藏的元素,后者可以淡出可见的元素,它们的调用格式分别为:

$(selector).fadeIn(speed,[callback]) 和 $(selector).fadeOut(speed,[callback])

其中参数 speed 为淡入淡出的速度,callback 参数为完成后执行的回调函数名。

例如,分别在页面中以淡入淡出的动画效果显示图片元素,如下图所示:

在浏览器中显示的效果:

从图中可以看出,当点击"淡出"按钮时,调用fadeOut()方法以淡出效果隐藏图片,当点击"淡入"按钮时,调用fadeIn()方法以淡入效果显示图片。

使用 fadeTo() 方法设置淡入淡出效果的不透明度

调用fadeTo()方法,可以将所选择元素的不透明度以淡入淡出的效果调整为指定的值,该方法的调用格式为:

$(selector).fadeTo(speed,opacity,[callback])

其中 speed 参数为效果的速度,opacity 参数为指定的不透明值,它的取值范围是 0.0~1.0,可选项参数 callback 为效果完成后,回调的函数名。

例如,分别调用fadeTo()方法,设置三个图片元素的不透明度值,如下图所示:

在浏览器中显示的效果:

从图中可以看出,调用fadeTo()方法,分别改变"opacity"参数的值,以淡入淡出的动画效果设置图片元素的不透明度。

调用 animate() 方法制作简单的动画效果

调用animate()方法可以创建自定义动画效果,它的调用格式为:

$(selector).animate({params},speed,[callback])

其中,params 参数为制作动画效果的 CSS 属性名与值,speed 参数为动画的效果的速度,单位为毫秒,可选项 callback 参数为动画完成时执行的回调函数名。

例如,调用animate()方法以由小到大的动画效果显示图片,如下图所示:

在浏览器中显示的效果:

从图中可以看出,调用animate()方法,以渐渐放大的动画效果显示图片元素,当动画执行完成后,通过回调函数在页面的<div>元素中显示"执行完成!"的字样。

调用 animate() 方法制作移动位置的动画

调用animate()方法不仅可以制作简单渐渐变大的动画效果,而且还能制作移动位置的动画,在移动位置之前,必须将被移元素的<a>"position"</a>属性值设为<a>"absolute"</a>或<a>"relative"</a>,否则,该元素移动不了。

例如,调用animate()方法先将图片向右移动 90px,然后,再将图片宽度与高度分别增加 30px,如下图所示:

在浏览器中显示的效果:

从图中可以看出,图片先向右移动了 90px,然后,移动成功后,再在原来的基础之上以动画的效果增大 30px,增加成功后,显示"执行完成!"的字样。

调用 stop() 方法停止当前所有动画效果

stop()方法的功能是在动画完成之前,停止当前正在执行的动画效果,这些效果包括滑动、淡入淡出和自定义的动画,它的调用格式为:

$(selector).stop([clearQueue],[goToEnd])

其中,两个可选项参数 clearQueue 和 goToEnd 都是布尔类型值,前者表示是否要停止当前动画执行之后的动画,后者表示是否完成正在执行的动画,默认为 false。

例如,在页面中,当图片元素正在执行动画效果时,点击"停止"按钮,中止正在执行的动画效果,如下图所示:

在浏览器中显示的效果:

从图中可以看出,当页面中的图片正在执行动画效果向右移动时,由于点击了"停止"按钮,执行了图片元素的stop()方法,因此,中止了正在执行的动画效果。

调用 delay() 方法延时执行动画效果

delay()方法的功能是设置一个延时值来推迟动画效果的执行,若当前已有动画,先执行完动画,再延时执行后面的动画,它的调用格式为:

$(selector).delay(duration)

其中参数 duration 为延时值,它的单位是毫秒,当超过延时值时,动画继续执行。

例如,当页面中图片动画正在执行时,点击"延时"按钮调用 delay() 方法推迟 2000 毫秒后继续执行,如下图所示:

在浏览器中显示的效果:

从图中可以看出,当图片动画正在执行时,点击"延时"按钮,调用delay()方法中止当前正在执行的图片动画效果,当超过设置的延时值时,动画效果继续执行。

编程练习

本节是编程练习挑战,请根据下面的任务描述,自由编写代码,并实践效果。加油!

任务

在页面中,创建两个按钮。

点击第一个"左移"按钮后,将页面中的<div>元素在当前的位置上,以动画的效果向左移动 50px;

点击第二个"右移"按钮后,页面中的<div>元素在当前的位置上,以动画的效果向右移动 50px。

<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>jQuery动画特效</title>
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script>
        
        <style type="text/css">
        div{
            position:absolute;
            top:50px;
            left:200px;
            height:50px;
            width:50px;
            border:1px solid red;
            }
        </style>
    
    </head>
    
    <body>
        <div></div>
        <input id="left" type="button" value="左移"/>
        <input id="right" type="button" value="右移"/>
        
        <script type="text/javascript">
            $(function() {
                var $ltime = 0;
                var $rtime = 0;
                $("#left").bind("click", function(){
                    $ltime++;
                    $("div").animate({
                        left:"-=50px"
                    },3000,function(){
                        $(this).html("向左移动了" + $ltime + "次");
                    });
                });
                
                $("#right").bind("click", function(){
                    $rtime++;
                    $("div").animate({
                        left:"+=50px"
                    },3000,function(){
                        $("div").html("向右移动了" + $rtime + "次");
                    });
                });
                
            });
        </script>
        
    </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性。但是通过css...
    老夫撩发少年狂阅读 1,079评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性。...
    阿r阿r阅读 1,131评论 0 4
  • 一般说来,能力可以分成: 知识:我们知道和理解的东西,广度和深度是评价标准。 技能:我们能操作和完成的技术,熟练程...
    古典阅读 3,822评论 16 195
  • 初中四年我一直担任语文课代表,一年班长,后来初三分班,我被分到了提高班,一模二模考下来,成绩进高中是肯定没问题的。...
    正五Yuki阅读 278评论 0 0