jQuery动画基础

1.动画DOM及其CSS操作
原理:以固定的时间间隔(例如,0.1秒),每次DOM元素的CSS样式修改一点(例如,高宽各增加10%)

2.自定义动画
animate() 可以实现任意动画效果,需要传递的参数是DOM元素最终的CSS状态和持续时间(ms,可选参数)
通过CSS样式将元素从一个状态改变为另一个状态
只有数字值可以创建动画(比如"margin:30px"),字符串值无法创建动画(比如"background-color:red")

var div = $('#test-animate');
div.stop().animate({//由于动画有持续时间,为防止操作过快,先通过stop()方法结束原有动画再开始新动画
	opacity:0.25,//如果属性值是数值,可以不添加引号,如果属性值中有字符,需要添加引号,否则报错不能生效
	width:'256px',//如果只输入256,不加引号也可以,默认单位是px
	height:'256px',
	fontSize:'16px'//注意使用驼峰形式
},3000);//以对象方式传入css参数,原本应该定义过不同的属性值才能产生变化

delay() 实现动画暂停(延迟)

//链式动画
$('div').stop()
.animate({'width':'0%'},1000)
.delay(3000)//将之后的动画延迟播放
.animate({'width':'100%'},1000);

3.动画函数
show()/hide()
直接以无参数形式调用show()和hide(),会显示和隐藏DOM元素,但只要传递一个时间参数进去,就变成了动画(同时改变透明度和宽高)
show()适用于通过jQuery(hide()、fadeOut()、slideUp())隐藏的元素,或者CSS中声明display:none的元素(不适用visibility:hidden的元素)

var div = $('#test-animate');
div.stop().hide(3000);//在3秒钟内逐渐消失

show( fast | normal | slow)
也可以传入三个关键字,从左到右速度变慢

toggle( fast | normal | slow) --作用于单个元素
根据当前状态决定是show()还是hide()

$('div').stop().toggle('slow');//如果当前元素是显示的,就将它隐藏;如果是隐藏的,就将它显示;同样有三个关键字;同时改变透明度和宽高

fadeIn( fast | normal | slow)/fadeOut( fast | normal | slow)
动画淡入淡出,通过不断设置DOM元素的opacity属性实现
fadeIn()适用于通过jQuery(hide()、fadeOut()、slideUp())隐藏的元素,或者CSS中声明display:none的元素(不适用visibility:hidden的元素)

$('div').stop().fadeIn('slow');

fadeToggle( fast | normal | slow)–作用于单个元素
根据元素是否可见决定下一步动作

$('div').stop().fadeToggle('slow');//如果当前元素是显示的,就将它隐藏;如果是隐藏的,就将它显示;同样有三个关键字;只改变透明度

slideUp( fast | normal | slow)/slideDown( fast | normal | slow)
在垂直方向逐渐收缩或展开,控制高度和透明度,不控制宽度
slideDown()适用于通过jQuery(hide()、fadeOut()、slideUp())隐藏的元素,或者CSS中声明display:none的元素(不适用visibility:hidden的元素)

$('div').stop().slideUp('slow');//消失
$('div').stop().slideDown('slow');//显示

slideToggle( fast | normal | slow)
根据当前状态决定收缩还是展开

以上均可以传入时间或关键字

4.计时器
setTimeout(fn,time)
等待一段时间后调用一次函数,只调用一次!
第一个参数为处理函数,time为延迟时间

var swiper = function(){
	...
	setTimeout(swiper,1000);//每隔一秒钟调用自己,死循环
}
setTimeout(swiper,1000);//实际只会执行一次

定时器中函数名不需要加引号

var timer = null;//先定义一个空变量
var slide = function(){
	$('img').stop().slideToggle(1000);
    timer = setTimeout(slide,2000);//将计时器赋值给空变量,此时并不会影响无限循环
}
$('.obj').click(function(){
    slide();
    clearTimeout(timer);//通过变量清除计时器,打破无限循环--实际是只让函数的第一句发挥作用
});

setInterval(fn,time)
每隔一段时间就调用一次函数,循环调用
fn同样可以是匿名函数,也可以是函数名(不要引号)
time为延迟时间,从第一次执行时就要延迟

var slide = function(){
    $('img').stop().slideToggle(1000);
}
$('.obj').click(function(){
    setInterval(slide,1000);//循环调用函数
});
var slide = function(){
    $('img').stop().slideToggle(1000);
}
$('.obj').click(function(){
    var timer = setInterval(slide,1000);
    clearInterval(timer);//终止方法一致,相当于一次都不调用
});
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值