《jQuery基础教程》-- 样式与动画

本文详细介绍了如何使用CSS方法设置或获取样式,包括使用`css()`方法进行样式设置与获取,以及如何利用jQuery的`hide()`、`show()`方法控制元素的显示与隐藏,并展示了如何创建渐变动画效果。此外,文章还讨论了动画的并发与队列处理,以及高级动画操作如`stop()`方法、全局动画开关与速度设定、动画承诺等。最后,通过实例演示了如何实现复杂的动画效果。

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

1.使用css方法来设置或获得样式。

例如:

var $speech = $('.speech');
var defaultSize = $speech.css('font-size');
这里使用css方法,仅带了一个参数,所以这里就是获得样式,类似于getter方法。

如果带了两个参数,那就类似于setter方法了。用途就是设置样式。

例如:

$speech.css('font-size',fontSizeNum);
这里使用css方法设置speech的font-size样式的内容为fontSizeNum。

这个fontSizeNum是一个值,单就本例来说,可以是14,也可以是‘14 px’。都没有问题的。

2.使用hide和show方法隐藏或者显示元素。

例如:

var $more = $('a.more');
	$more.nextAll().hide();
	$more.click(function(){
		$more.nextAll().show();
		$(this).hide();
		return false;
});
这里指定了a标签的一个class为more。初始的时候,通过hide方法,隐藏了其后的元素。然后通过点击事件,使用show方法显示其后的元素并且隐藏自己。

return false是为了阻止链接触发。

在使用hide和show方法的时候可以给这2个方法传入两种参数,分别是:

字符串类型的“slow”,“normal”,“fast”,分别表示动画效果的时常,0.6,0.4,0.2s。

也可以是数值型的,如850.单位毫秒。

例如:hide(850);

3.使用渐变动画

上一个小标题使用hide和show的时候,如果加入参数,那么可以制造动画效果。动画效果不止hide和show,还有如下几种,可以单独使用,也可以复合使用:

淡入、淡出 -- fadeIn 、fadeOut

滑上、滑下 -- slideUp 、slideDown

复合显示切换 -- toggle

复合滑动切换 -- slideToggle 

4.使用自定义动画方法animate

animate方法可以用来替换css方法,其结果就是可以达到动画渐变的样式改变。

标准的使用方法为:

.animate({property:'value1',property:'value2'}, speed, easing, function(){});

这里四个参数分别指定了css样式、变化速度、变化函数效果、变化后回调函数。

animate方法同时也可以简化为使用两个参数的,下面这个具体使用的例子说明了这一点:

var $link = $(this);
$link.nextAll().animate({height:'toggle'},'slow');
这里仅包括2个参数,第一个还是css样式,第二个是变化速度,而后两个则使用默认。

当然,css3也可以实现这种动画效果,性能要比javascript的高一些,但是,支持css3的浏览器参差不齐,兼容性是一个问题,尤其是令人怨声载道的IE。

5.动画的并发与队列处理

设计的时动画有的时候需要一起执行,或者按照先后次序执行。这就需要用到动画的并发与队列处理了。

首先说队列处理,由于jQuery的连缀特性,所以,要实现动画依照队列执行,只需要让动画连缀编写就可以了。

再来说动画的并发处理,在连缀写法的时候,如果在动画的持续时间处加上queue:false就可以使后一个动画提前到和前一个动画一起执行。

如下面的例子,这个例子里面包含了动画的并发与队列处理:

$('div.label').click(function(){
		var paraWidth = $('div.speech p').outerWidth();//获得speech内p的宽度
		var $switcher  = $(this).parent();
		var switcherWidth = $switcher.outerWidth();
		$switcher.css({position:'relative'}).fadeTo('fast',0.5)
			.animate({left:paraWidth-switcherWidth},{duration:'slow',queue:false})
			.fadeTo('slow',1.0).slideUp('slow').queue(function(){
				$switcher.css({'background-color':'#f00'});
				next();
			}).slideDown('slow');
});

这个例子对switcher进行了许多种动画的组合操作,其中将animate方法的持续时间改为{duration:'slow',queue:false},这样加入queue:false就可以保证此动画效果提前到前一个动画处一起执行。

而后面的queue(function(){})这个方法则是为动画队列进行到此处提供了一个回调函数的方法。PS:另外一种回调方法是在每一个效果函数(如slideUp等等)这些,可以使用两个参数的重载方法,其第二个参数就是调用这个效果函数后的回调方法。例如:

var clickedItem = $(this);
clickedItem.next().slideDown('slow',function(){
	clickedItem.slideUp('slow');
});

6.高级动画操作

以下介绍了一些高级的动画操作,虽然不常用,但是使用得当的话,可以达到很好的效果。

第一,stop方法

stop方法用于中止当前正在进行的动画,如下:

//调用stop可以立刻终止正在进行的动画
$(this).find('img').stop().animate({
			width:size,
			height:size,
			paddingTop:padding,
			paddingLeft:padding
});
这里在给img元素使用动画之前,如果img元素仍处于动画状态,则可以立即停止。

第二,动画效果的全局开关和全局速度设定

$.fx.off设定动画全局效果开关,$.fx.speeds进行全局速度设定。如下例:

//使用$.fx.off禁用全局效果。
$('#fx-toggle').show().bind('click',function(){
		$.fx.off = !$.fx.off;
});
	
//使用$.fx.speeds设定全局动画速度
$.fx.speeds._default = 250;
这里的_default是speeds下的默认动画速度。初始是400。

第三,动画承诺

动画承诺类似于一种回调函数,当我们不清楚一个动画何时执行完毕的但是,却需要在动画执行完毕后立即调用。那就需要动画承诺的两个方法promise和done方法。

如下:

//添加动画承诺
$movable = $('<div id="movable"></div>').appendTo('body');
var bioBaseStyles = {
		display:'none',
		height:'5px',
		width:'25px'
	};
var bioEffects = {
		duration: 800,
		easing: 'easeOutQuart',
		specialEasing:{
			opacity: 'linear'
		}
	};
	
function showDetails(){
		$member = $(this);
		//通过hasClass方法判断是否存在active的css类
		if($member.hasClass('active'))
		{
			return;
		}
		//然后如果不是存在active类的,让其隐藏
		$movable.fadeOut();
		$('div.member.active').removeClass('active').children('div').fadeOut();
		$member.addClass('active');
		$member.find('div').css({
			display: 'block',
			left: '-300px',
			top: 0
		}).each(function(index){
			$(this).animate({
			left: 0,
			top: 25*index
			});
		}).promise().done(showBio);
	}
	
	$('div.member').click(showDetails);
	
	
	
function showBio()
{
		var $member = $(this).parent(),
		$bio = $member.find('p.bio'),
			//通过extend方法将始终不变的基本样式和根据不同成员位置变化的top和left属性结合在一起。
			startStyles = $.extend(bioBaseStyles, $member.offset()),
			endStyles = {
				display: 'block',
				width: $bio.width(),
				top: $member.offset().top + 5,
				left: $member.width() + $member.offset().left - 5,
				opacity: 'slow'
			};
		$movable.html($bio.clone()).css(startStyles)
			.animate(endStyles, bioEffects)
			.animate({height: $bio.height()},{easing: 'easeOutQuart'});
}
promise和done的用法,只需要连缀到想要使用的动画元素之后就可以了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值