第1章 WEB前端开发工程师-jQuery框架 1-20:jQuery动画效果

本文详细介绍了jQuery动画效果的多种应用,包括显示、隐藏、滑动、卷动、淡入、淡出及自定义动画。讲解了动画的速度控制、列队动画实现方式,以及动画回调函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                    jQuery动画效果

 

本节课所讲内容:

1.显示、隐藏

2.滑动、卷动

3.淡入、淡出

4.自定义动画

5.列队动画方法

6.动画相关方法

7.动画全局属性

                                                               主讲教师:Head老师

在以前很长一段时间里,网页上的各种特效还需要采用 flash 在进行。但最近几年里,我们已经很少看到这种情况了,绝大部分已经使用 JavaScript 动画效果来取代 flash。这里说的取代是网页特效部分,而不是动画。网页特效比如:渐变菜单、渐进显示、图片轮播等;而动画比如:故事情节广告、MV 等等。

一. 显示、隐藏

jQuery 中显示方法为:.show(),隐藏方法为:.hide()。在无参数的时候,只是硬性的显

示内容和隐藏内容。

$('.show').click(function () { //显示

$('#box').show();

});

$('.hide').click(function () { //隐藏

$('#box').hide();

});

注意:.hide()方法其实就是在行内设置 CSS 代码:display:none; .show()方法要根据原

来元素是区块还是内联来决定,如果是区块,则设置 CSS 代码:display:block; 如果是内联,

则设置 CSS 代码:display:inline;

.show().hide()方法可以传递一个参数,这个参数以毫秒(1000 毫秒等于 1 秒钟)来控

制速度。并且里面富含了匀速变大变小,以及透明度变换。

$('.show').click(function () {

$('#box').show(1000); //显示用了 1

});

$('.hide').click(function () {

$('#box').hide(1000); //隐藏用了 1

});

除了直接使用毫秒来控制速度外,jQuery 还提供了三种预设速度参数字符串:slow

normal fast,分别对应 600 毫秒、400 毫秒和 200 毫秒。

$('.show').click(function () {

$('#box').show('fast'); //200 毫秒

});

$('.hide').click(function () {

$('#box').hide('slow'); //600 毫秒

});

注意:不管是传递毫秒数还是传递预设字符串,如果不小心传递错误或者传递空字符串。

那么它将采用默认值:400 毫秒。

$('.show').click(function () {

$('#box').show(''); //默认 400 毫秒

});

//使用.show().hide()的回调函数,可以实现列队动画效果。

$('.show').click(function () {

$('#box').show('slow', function () {

alert('动画持续完毕后,执行我!');

});

});

//列队动画,使用函数名调用自身

$('.show').click(function () {

$('div').first().show('fast', function showSpan() {

$(this).next().show('fast', showSpan);

});

});

//列队动画,使用 arguments.callee 匿名函数自调用

$('.hide').click(function () {

$('div').last().hide('fast', function() {

$(this).prev().hide('fast', arguments.callee);

});

});

我们在使用.show().hide()的时候,如果需要一个按钮切换操作,需要进行一些条件判

断。而 jQuery 提供给我们一个类似功能的独立方法:.toggle()

$('.toggle').click(function () {

$(this).toggle('slow');

});

二.滑动、卷动

jQuery 提供了一组改变元素高度的方法:.slideUp().slideDown().slideToggle()。顾名

思义,向上收缩(卷动)和向下展开(滑动)

$('.down').click(function () {

$('#box').slideDown();

});

$('.up').click(function () {

$('#box').slideUp();

});

$('.toggle').click(function () {

$('#box').slideToggle();

});

注意:滑动、卷动效果和显示、隐藏效果一样,具有相同的参数。

三. 淡入、淡出

jQuery 提供了一组专门用于透明度变化的方法:.fadeIn().fadeOut(),分别表示淡入、

淡出,当然还有一个自动切换的方法:.fadeToggle()

$('.in').click(function () {

$('#box').fadeIn('slow');

});

$('.out').click(function () {

$('#box').fadeOut('slow');

});

$('.toggle').click(function () {

$('#box').fadeToggle();

});

上面三个透明度方法只能是从 0 100,或者从 100 0,如果我们想设置指定值就没

有办法了。而 jQuery 为了解决这个问题提供了.fadeTo()方法。

$('.toggle').click(function () {

$('#box').fadeTo('slow', 0.33); //0.33 表示值为 33

});

注意:淡入、淡出效果和显示、隐藏效果一样,具有相同的参数。对于.fadeTo()方法,

如果本身透明度大于指定值,会淡出,否则相反。

四. 自定义动画

jQuery 提供了几种简单常用的固定动画方面我们使用。但有些时候,这些简单动画无法

满足我们更加复杂的需求。这个时候,jQuery 提供了一个.animate()方法来创建我们的自定

义动画,满足更多复杂多变的要求。

$('.animate').click(function () {

$('#box').animate({

'width' : '300px',

'height' : '200px',

'fontSize' : '50px',

'opacity' : 0.5

});

});

注意:一个 CSS 变化就是一个动画效果,上面的例子中,已经有四个 CSS 变化,已经

实现了多重动画同步运动的效果。

必传的参数只有一个,就是一个键值对 CSS 变化样式的对象。还有两个可选参数分别

为速度和回调函数。

$('.animate').click(function () {

$('#box').animate({

'width' : '300px',

'height' : '200px'

}, 1000, function () {

alert('动画执行完毕执行我!');

});

});

到目前位置,我们都是创建的固定位置不动的动画。如果想要实现运动状态的位移动画,

那就必须使用自定义动画,并且结合 CSS 的绝对定位功能。

$('.animate').click(function () {

$('#box').animate({

'top' : '300px', //先必须设置 CSS 绝对定位

'left' : '200px'

});

});

自定义动画中,每次开始运动都必须是初始位置或初始状态,而有时我们想通过当前位

置或状态下再进行动画。jQuery 提供了自定义动画的累加、累减功能。

$('.animate').click(function () {

$('#box').animate({

'left' : '+=100px',

});

});

自定义实现列队动画的方式,有两种:1.在回调函数中再执行一个动画;2.通过连缀或

顺序来实现列队动画。

//通过依次顺序实现列队动画

$('.animate').click(function () {

$('#box').animate({'left' : '100px'});

$('#box').animate({'top' : '100px'});

$('#box').animate({'width' : '300px'});

});

注意:如果不是同一个元素,就会实现同步动画

//通过连缀实现列队动画

$('.animate').click(function () {

$('#box').animate({

'left' : '100px'

}).animate({

'top' : '100px'

}).animate({

'width' : '300px'

});

});

//通过回调函数实现列队动画

$('.animate').click(function () {

$('#box').animate({

'left' : '100px'

}, function () {

$('#box').animate({

'top' : '100px'

}, function () {

$('#box').animate({

'width' : '300px'

});

});

});

});

<!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="q">
    <title>jQuery 动画效果</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.js"></script>
    <style>
        div{
          width: 200px;
          height: 200px;
          background: red;
        }
    </style>
<body>
    <!--
    
      <input type="button" value="显示" class="show">
    <input type="button" value="隐藏" class="hide">
      <div>
          div
      </div>
      <script>
          $(function(){
              $('.show').click(function(){
                 $('div').show('fast');
              })
              $('.hide').click(function(){
                 $('div').hide('normal');
              })
          })
      </script>
     -->
     
     <input type="button" value="1" class="a">
     <input type="button" value="2" class="b">
     <div>
        div
     </div>
     <script>
        $(function(){
            $('.a').click(function(){
                // $('div').slideUp(2000);
                // $('div').slideDown(2000);
              // $('div').slideToggle(2000);
              // $('div').fadeIn(2000);  //透明度
              // $('div').fadeOut(2000);
            })
            $('.b').click(function(){
                $('div').animate({
                    'width': '300px',
                    'height': '300px',
                    'fontSize':'50px',
                    'opacity':0.5
                },2000)
            })
        })
     </script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值