JS和CSS3结合实现动画

JS和CSS3结合实现动画

  • 我们知道,CSS3的transition过渡属性可以实现动画
  • JavaScript可以利用CSS3的transition属性轻松实现元素
    动画
  • JS和CSS3结合实现动画规避了定时器制作动画的缺点
    函数节流
  • 函数节流:一个函数执行一次后,只有大于设定的执行周期后才允许执行第二次
  • 函数节流非常容易实现,只需要借助setTimeout()延时器
var lock = true;
function 需要节流的函数() {
// 如果锁是关闭状态,则不执行
if (!lock) return;
// 函数核心语句
// 关锁
lock = false;
// 指定毫秒数后将锁打开
setTimeout(function () {
lock = true;
}, 2000);
}

动画效果开发1 - 无缝连续滚动特效
动画效果开发2 - 跑马灯轮播图特效
动画效果开发3 - 呼吸轮播图特效

定时器和延时器
定时器

  • setInterval()函数可以重复调用一个函数,在每次调用之
    间具有固定的时间间隔

函数的参数

setInterval()函数可以接收第3、4……个参数,它们将按顺序传入函数

setInterval(function (a, b) {
// 形式参数a的值是88,形式参数b的值是66
}, 2000, 88, 66);
  • 具名函数也可以传入setInterval
var a = 0;
function fun() {
console.log(++a);
}
setInterval(fun, 1000);

清除定时器

clearInterval()函数可以清除一个定时器

// 设置定时器,并且用timer变量接收这个定时器
var timer = setInterval(function () {
}, 2000);
// 点击按钮时,清除定时器
oBtn.onclick = function () {
clearInterval(timer);
}

延时器
setTimeout()函数可以设置一个延时器,当指定时间到了
之后,会执行函数一次,不再重复执行。

setTimeout(function () {
// 这个函数会在2秒后执行一次
}, 2000);

清除延时器

  • clearTimeout()函数可以清除延时器,和clearInterval()
    非常类似

初步认识异步语句

  • setInterval()和setTimeout()是两个异步语句
  • 异步(asynchronous):不会阻塞CPU继续执行其他语句,当异步完成时,会执行“回调函数”(callback)
setTimeout(function () {
console.log('A');
}, 2000);
console.log('B');


使用定时器实现动画

  • 使用定时器可以实现动画,利用的就是“视觉暂留”原理
  • 使用定时器实现动画较为不便:
    ① 不方便根据动画总时间计算步长
    ② 运动方向要设置正负
    ③ 多种运动进行叠加较为困难(比如一个方形一边移动一边变为圆形)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值