欢迎访问宙启技术站
智能推送

js实现酷炫倒计时动画

发布时间:2023-05-14 13:40:01

倒计时动画是一个很常见的场景,比如倒计时结束后跳转到下一个页面、活动开始前的倒计时、倒计时提示活动结束等,而使用JavaScript实现倒计时动画效果是一种简单易行的方式。在本文中,我们将介绍如何使用JavaScript实现一个酷炫的倒计时动画。

一、设计思路

通常情况下,我们会采用定时器来实现倒计时动画,即每隔一段时间更新一次显示时间。在这个基础上,我们可以添加一些动画效果,如数字的翻转、背景颜色的渐变等,使倒计时更加生动。

具体的思路分为以下几个步骤:

1、获取当前时间以及倒计时结束时间,计算出时间差。

2、根据时间差更新页面倒计时显示。

3、在更新显示的同时,添加动画效果。

二、实现过程

1、获取当前时间和结束时间

首先,我们需要获取当前时间和倒计时结束时间,再计算时间差。我们可以使用Date对象获取当前时间,再将所需的倒计时结束时间作为参数传入Date构造函数中,从而获取结束时间。

var endTime = new Date('2021/12/31 23:59:59');

var nowTime = new Date();

var leftTime = parseInt((endTime.getTime() - nowTime.getTime()) / 1000);

其中,getTime()方法返回从1970年1月1日00:00:00 UTC 到当前日期的毫秒数,除以1000可以获取以秒为单位的时间差。

2、更新倒计时显示

我们可以将倒计时显示的部分设为一个div元素,用innerHTML或innerText方法设置显示的内容。

<div id="countdown"></div>

var countdown = document.getElementById('countdown');

countdown.innerHTML = leftTime;

接下来,我们需要在定时器中每隔一秒更新一下leftTime的值,并再次更新显示内容。

setInterval(function() {

  leftTime--;

  countdown.innerHTML = leftTime;

},1000);

3、添加动画效果

现在我们已经实现了一个简单的倒计时效果,接下来我们可以增加一些动画效果,如文字的翻转、背景颜色的渐变等。

首先,在CSS中定义一些动画效果,如下所示:

@keyframes flip {

  0% {

    transform: rotateX(0deg);

  }

  100% {

    transform: rotateX(360deg);

  }

}

@keyframes countdown-bg {

  0% {

    background: #00ff00;

  }

  50% {

    background: #ffff00;

  }

  100% {

    background: #ff0000;

  }

}

然后,在倒计时更新时,我们可以使用classList.add()和classList.remove()方法来添加和移除CSS类,以实现动态效果。

setInterval(function() {

  leftTime--;

  countdown.innerHTML = leftTime;

  countdown.classList.add('animated', 'flip');

  countdown.style.animationDuration = '1s';

  countdown.style.animationDelay = '0s';

  countdown.style.animationIterationCount = '1';

  countdown.style.animationFillMode = 'forwards';

  setTimeout(function() {

    countdown.classList.remove('animated', 'flip');

  }, 1000);

  if (leftTime <= 10) {

    countdown.classList.add('animated', 'countdown-bg');

    countdown.style.animationDuration = '1s';

    countdown.style.animationDelay = '0s';

    countdown.style.animationIterationCount = 'infinite';

  } else {

    countdown.classList.remove('animated', 'countdown-bg');

  }

},1000);

这样,在倒计时更新时,我们就可以实现文字的翻转、背景颜色的渐变等酷炫的动画效果。

三、总结

通过本文的介绍,我们可以使用JavaScript实现一个酷炫的倒计时动画。在实现过程中,我们需要获取当前时间和倒计时结束时间,计算时间差,并在定时器中更新倒计时显示,并增加一些动画效果以使倒计时更加生动。