21-Javaweb学习-动画

21-Javaweb学习-动画

1.动画之 显示 隐藏 动画

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

$('.show').click(function () { //显示
	$('#box').show();
});

$('.hide').click(function () { //隐藏
	$('#box').hide();
});.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 毫秒
});
//使用.show()和.hide()的回调函数,可以实现列队动画效果。
$('.show').click(function () {
    $('#box').show('slow', function () {
    alert('动画持续完毕后,执行我!');
});
                             });

//隐藏显示的切换
我们在使用.show().hide()的时候,如果需要一个按钮切换操作,需要进行一些条件判
断。而 jQuery 提供给我们一个类似功能的独立方法:.toggle()$('.toggle').click(function () {
    $(this).toggle('slow');
});

2.动画队列动画

<body>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<button class='showdiv'>显示</button>
<button class='hiddendiv'>隐藏</button>
</body>
逐个显示 和 逐个隐藏
$('.showdiv').click(function(){
    $('.box').first().show(1000,function myshow(){
              //this 当前的对象
            $(this).next().show(1000,myshow);//递归调用 myshow这个函数
    });
});

//逐个隐藏
$('.hiddendiv').click(function(){
    $('.box').last().hide(1000,function myshow(){

   $(this).prev().hide(1000,myshow);

   });
});

3.动画之下滑上卷

jQuery 提供了一组改变元素高度的方法:.slideUp().slideDown().slideToggle()。顾名思义,向上收缩(卷动)和向下展开(滑动)$('.down').click(function () {
    $('#box').slideDown();
});

$('.up').click(function () {
$('#box').slideUp();});

$('.toggle').click(function () {
    $('#box').slideToggle();
});
注意:滑动、卷动效果和显示、隐藏效果一样,具有相同的参数。

4.动画之淡入淡出

jQuery 提供了一组专门用于透明度变化的方法:.fadeIn().fadeOut(),分别表示淡入、
淡出,当然还有一个自动切换的方法:.fadeToggle()$('.in').click(function () {
    $('#box').fadeIn('slow');
});
$('.out').click(function () {
    $('#box').fadeOut('slow');
});

$('.toggle').click(function () {
    $('#box').fadeToggle();
});
上面三个透明度方法只能是从 0100,或者从 1000,如果我们想设置指定值就没有办法了。而 jQuery 为了解决这个问题提供了.fadeTo()方法。
$('.toggle').click(function () {
    $('#box').fadeTo('slow', 0.33); //0.33 表示值为 33
});
注意:淡入、淡出效果和显示、隐藏效果一样,具有相同的参数。对于.fadeTo()方法,如果本身透明度大于指定值,会淡出,否则相反。

5.动画之自定义动画 animate()

到目前位置, 我们都是创建的固定位置不动的动画。 如果想要实现运动状态的位移动画,那就必须使用自定义动画,并且结合 CSS 的绝对定位功能。

$(‘.animate’).click(function () {
    //我们把CSS属性放到JSON对象中作为animate方法的参数 这个是必须参数
    $(‘#box’).animate({    
      ‘top’ : ‘300px’, //先必须设置 CSS 绝对定位
      ‘left’ : ‘200px’
      });
      });
      在animaie()方法中除了一个必要参数 还有3个可选参数 一个是时间,一个是运动方式 swing(缓动)、linear(匀速),默认为 swing。一个是回调函数

$('.animate').click(function () {
    $('#box').animate({
        'width' : '300px',
		'height' : '200px'
    }, 1000, ‘linear’,function () {
        alert('动画执行完毕执行我!');
                                  });
    );

6.自定义动画

自定义动画中,每次开始运动都必须是初始位置或初始状态,而有时我们想通过当前位置或状态下再进行动画。jQuery 提供了自定义动画的累加、累减功能。
$(.animate’).click(function () {
$(‘#box’).animate({
  ‘left’ :+=100px’,  //每点一次 在原来的基础上再移动100像素
  });
});

7.自定义动画之队列动画

自定义实现列队动画的方式,有两种:1.在回调函数中再执行一个动画;2.通过连缀或顺序来实现列队动画。
方式1: 比较繁琐,不推荐
//通过回调函数实现列队动画
$('.animate').click(function () {
	$('#box').animate({
	'left' : '100px'
	}, function () {
		$('#box').animate({
			'top' : '100px'
		}, function () {
			$('#box').animate({
			'width' : '300px'
			});
		});
	});
});
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'
    });
});

8.队列动画方法queue()

之前我们已经可以实现列队动画了,如果是同一个元素,可以依次顺序或连缀调用。 如果是不同元素,可以使用回调函数。但有时列队动画太多,回调函数的可读性大大降低。 为此,jQuery 提供了一组专门用于列队动画的方法。
//连缀无法实现按顺序列队
$('#box').slideUp('slow').slideDown('slow').css('background', 'orange');

注意:如果动画方法,连缀可以实依次列队,而.css()方法不是动画方法,会在一开始传入列队之前。那么,可以采用动画方法的回调函数来解决。
//使用回调函数,强行将.css()方法排队到.slideDown()之后
$('#box').slideUp('slow').slideDown('slow', function () {
    $(this).css('background', 'orange');
});

但如果这样的话,当列队动画繁多的时候,可读性不但下降,而原本的动画方法不够清晰。所以,我们的想法是每个操作都是自己独立的方法。那么 jQuery 提供了一个类似于回调函数的方法:.queue()//使用.queue()方法模拟动画方法跟随动画方法之后
$('#box').slideUp('slow').slideDown('slow').queue(function () {
    $(this).css('background', 'orange');
});

9.自定义动画的相关方法

很多时候需要停止正在运行中的动画,jQuery 为此提供了一个.stop()方法。它有两个可选参数:.stop(参数1, 参数2);参数1:传递一个布尔值,代表是否清空未执行完的动画列队,参数2:代表是否直接将正在执行的动画跳转到末状态。
<div class="box"></div>
<button class='showdiv'>执行队列动画</button>
<button class='mystop'>停止队列动画</button>


//队列动画
$('.showdiv').click(function() {
$('.box').animate({'left':'200px'},1000);
$('.box').animate({'top':'200px'},1000);
$('.box').animate({'width':'200px'},1000);
$('.box').animate({'height':'200px'},1000);
});
//停止队列动画
$('.mystop').click(function(){
$(.box’).stop();//如果不传参数默认 只会停止当前的一个队列动画,后续的队列动画会继续执行
});

10.自定义动画相关方法


<div class="box"></div>
<button class='showdiv'>执行队列动画</button>
<button class='mystop'>停止队列动画</button>

//队列动画
$('.showdiv').click(function() {
$(.box’).animate({‘left’:200px’},1000);  //参2 1000 表示动画执行的时间是1秒
    
$('.box').animate({'top':'200px'},1000);
$('.box').animate({'width':'200px'},1000);
$('.box').animate({'height':'200px'},1000);
});

//停止队列动画
$('.mystop').click(function(){
$(.box’).stop(true);//如果这里传一个参数为true  那就会立刻停止动画,后续动画不会再执行
//$(‘.box’).stop(true,true);
//如果两个参数都为true 第二个参数表示立马停掉正在执行的队列动画,但是这个队列动画会停到结束位置
});

注意:第一个参数表示是否取消列队动画,默认为 false。如果参数为 true,当有列队动画的时候,会取消后面的列队动画。第二参数表示是否到达当前动画结尾,默认为 false。如果参数为 true,则停止后立即到达末尾处。

11.自定义动画相关方法

有时在执行动画或列队动画时,需要在运动之前有延迟执行,jQuery 为此提供了.delay()方法。这个方法可以在动画之前设置延迟,也可以在列队动画中间加上。
//队列动画
$('.showdiv').click(function() {
$('.box').animate({'left':'200px'},1000);
$(.box’).animate({‘top’:200px’},1000).delay(2000);//第二个队列动画执行完后,等待2秒再执行
    
$('.box').animate({'width':'200px'},1000).delay(1000);
$('.box').animate({'height':'200px'},1000);
});

//停止队列动画
$('.mystop').click(function(){
$('.box').stop(true);
});

12.自定义动画之判断正在执行的动画

在选择器的基础章节中,我们提到过一个过滤器:animated,这个过滤器可以判断出当前
运动的动画是哪个元素。 通过这个特点, 我们可以避免由于用户快速在某个元素执行动画时,由于动画积累而导致的动画和用户的行为不一致。
//递归执行自我,无线循环播放
$('#box').slideToggle('slow', function () {
//arguments.callee 递归调用
$(this).slideToggle('slow', arguments.callee);
});
//停止正在运动的动画,并且设置红色背景
$('.button').click(function(){
//:animated 选择正在运动的动画
$(‘div:animated’).stop().css(‘background’, ‘red’); //停止正在运动的动画,并改下背景颜色});

13.动画全局属性

jQuery 提供了两种全局设置的属性, 分别为: $.fx.interval, 设置每秒运行的帧数; $.fx.off,
关闭页面上所有的动画。
$.fx.interval 属性可以调整动画每秒的运行帧数,默认为 13 毫秒。数字越小越流畅,但可能影响浏览器性能
//设置运行帧数为 1000 毫秒
$.fx.interval = 1000; //默认为 13
$('.button').click(function () {
	$('#box').toggle(3000);
});

$.fx.off 属性可以关闭所有动画效果,在非常低端的浏览器,动画可能会出现各种异常问题导致错误。而 jQuery 设置这个属性,就是用于关闭动画效果的。
//设置动画中间的过渡帧为关闭 true   比如 显示隐藏动画时 就很生硬了,因为中间的过渡被关闭了
$.fx.off = true; //默认为 false
发布了63 篇原创文章 · 获赞 11 · 访问量 2050

猜你喜欢

转载自blog.csdn.net/weixin_42401546/article/details/105349987