原生js实现动画过渡效果

原生JS实现动画过渡效果原理

一般情况实现动画效果可以采用CSS3里的transition属性实现动画过渡。但如果有需求只能采用原生JS的情况下可以采用JS里的定时器功能。当然还有很多可以实现动画效果的方法。因为本人初步接触前端,实力不足这里只讲一下定时器的使用。
以固定的时间(极短)每次将CSS样式修改一点,达到视觉上的动画效果,使运动看起来不是特别生硬。

定时器使用

var timer = null;
    timer = setInterval(function() {
            pic.style.width = pic.offsetWidth + speed + "px";
        }
    }, time)

这里的pic可以是任意元素,speed则是单位时间pic宽度的变换量(速度),time是执行一次的时间。当time足够小时pic就会使宽度的变化以动画形式展现。

但是这种情况下pic的宽度会一直以speed的速度执行下去。我们需要加一个条件,当满足此条件时结束定时器

var timer = nullclearInterval(timer);
    timer = setInterval(function() {
        if (pic.style.width >= 150 + "px") {
            clearInterval(timer);
        } else {
            pic.style.width = pic.offsetWidth + speed + "px";
        }
    }, time)

此时pic.style.width >= 150 + "px"就是定时器停止的条件。当图片宽度大于150px时,结束定时器。

注意

  • 执行语句和清除定时器的判断语句必须用if else语句连接。
  • 判断语句最好用 >= 而不是 == 因为在定时器执行时不一定能准确达到期望值。此时加上 >= 可以时定时器及时结束。

结语

以上就是我对原生JS里定时器的浅层认识,如有错误欢迎提出、讨论。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值