jQuery学习笔记(基于jquery.1.10.2进行的验证)之二

三、样式与动画

    1.修改内联css

    jQuery提供.css()方法获取以及设置css样式属性的值。该方法可以一次性为多个css样式属性设置。如下所示:

$('div').css({'font-size':'18px','color':'red'});
    在{}之中的“属性名:属性值”映射中,属性名如果采用标准的css命名方式(即属性名由多个单词组成时中间用“-”分隔),必须用引号包围起来,而如果采用驼峰命名方式,可以不用引号。属性值如果是数字,可以不用引号,否则的话也要用引号包围起来。

    注:上例中的‘18px’也可以只是用数字18取代。

    2.UI效果的速度

    对于jQuery的任何效果都可以指定预设的三种速度效果:‘slow’,‘fast’,‘mormal’,对应的动画时间分别是0.6s,0.2s和0.4s。要指定更精确的速度,也可以使用毫秒数值。例如$('p').show(1500)、$('p').hide(1200),参数不带引号。速度参数为非‘slow’、‘fast’、‘mormal’三者之一的字符串时,效果与‘normal’相同。

     3.UI效果

    ① show()和hide(),显示隐藏。可以接收速度参数,show()的效果为从上向下展开,hide()的效果为从下向上收起。

    ② fadeIn()和fadeOut(),淡入淡出。可以接收速度参数,fadeIn()效果为从无到有逐渐增加不透明度,fadeOut()效果从有到无逐渐增加透明度直到对象完全隐藏。淡入淡出效果适用于位于文档流之外的元素,否则的话会有跳跃感。

    ③slideDown()和slideUp(),滑下滑上。可以接收速度参数,slideDown()效果为从上向下展开,slideUp()效果为从下向上收起。这组效果和显示隐藏效果的区别是,显示隐藏同时还有淡入淡出的效果,可以说①是②和③的综合效果。

    ④animate(),自定义动画。该方法有两种调用方式,以下分别介绍。

    第一种方式接收四个参数:1).一组包含css样式名称及其取值的映射,置于{}之中,多于一对的时候以半角逗号隔开。2).可选的速度参数,可以是预设字符串,也可以是具体数值。3).可选的缓动(easing)类型。4).可选的回调函数。示例如下:

.animate({property1:'value1',property2:'value2'},speed,easing,function(){});
    第二种方式接收两个参数,一个属性映射和一个选项映射:.animate({properties},{options})。示例如下所示:

.animate({
    property1:'value1',
    property2:'value2'
},{
    duration:'value',
    easing:'value',
    specialEasing:{
        property1:'easing1',
        property2:'easing2'
    },
    complete:function(){},
    queue:true,
    step:callback
});
    需要注意的是使用.animate()方法调整的css属性必须是已经“存在”的属性,看以下代码:

$('button').click(
    $('p').animate({fontSize:'36px',borderWidth:'5px'},'slow');
);
    在上述代码中触发click事件之后,如果p标签原来的border是可见的,那么它会从原来的值逐渐变化为5px。但是如果原来的border未设置(默认border为无),则border不会发生从无到有的变化。

    另外,设置css属性height和opacity的值为‘toggle’,可实现同时具有透明度和高度变化的交替“隐现”效果。 

    ⑤排队效果

    使用animate()方法可以同时动态改变元素的多个css样式。有时候我们希望这些动画效果依次实现,也就是排队实现,这时只要使用方法连缀每次改变元素的一个属性即可。

$('button').click(
    $('p').animate({fontSize:'36px'},'slow').animate({borderWidth:'5px'},'slow');
);
    当然也可以依次调用其他动画方法实现排队效果。

    在animate()方法的第二种调用方式中,将queue属性的值设置为false即可让当前动画“超越队列”与前一动画同时开始:

$('button').click(
    $('p').opaticy('0.5','fast')
    .animate({fontSize:'36px'},{duration:'slow',queue:false})
   .opaticy('0.1','fast');
);

    在以上代码中,p标签的内容透明度从1减小到0.5的过程中,字体变化到36px,但是由于两者的动画速度一个是fast另一个是slow,所以不能简单的合并到一个animate()方法中。所以使用方法连缀并且animate()方法采用第二种调用方式,参数queue设置为false,这样animate()方法内容就跳出队列与上一效果同时发生。

    排队效果最后一个需要注意的问题就是,非动画效果的方法在排队的连缀方法中不会按顺序执行。

$('button').click(function(){
	$('p').slideUp('slow').css('color','blue').slideDown('slow');
});
    以上代码执行过程不会得到预期的“隐藏”-->“改变字体颜色”-->“显示”的效果顺序,而是首先改变字体颜色,然后依次执行动画效果。原因就是css()方法不是一个具有动画效果的方法。要达到预期的效果可以在相应位置调用queue()方法,并在该方法中通过回调函数实现非动画效果的方法。

$('button').click(function(){
	$('p').slideUp('slow')
	.queue(function(next){
		$('p').css('color','blue');
		next();
	})
	.slideDown('slow');
});
    上述代码中的next()方法负责把中断的动画效果连接起来,如果没有这个方法动画效果将就此中断。

    ⑥动画效果的回调函数

    假设要对两个段落分别应用一系列的动画效果,代码如下:

$('button').click(function(){
	$('p').eq(0).slideUp('slow');
	$('p').eq(1).slideDown('slow');
});
    以上代码的执行效果是滑上和滑下同时发生,如果想要一个动画效果完成之后再执行另一个效果,就用到了动画方法的第二个参数:回调函数。

$('span').click(function(){
	$('p').eq(0).slideUp('slow',function(){
		$('p').eq(1).slideDown('slow');
	});
});
    提到回调函数,在前面的队列动画效果中通过queue()方法实现的非动画效果的排队,也可以通过回调函数实现:

$('button').click(function(){
	$('p').slideUp('slow',function(){
                $(this).css('color','blue');
        })
	.slideDown('slow');
});





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值