js实现酷炫倒计时动画
倒计时动画是一个很常见的场景,比如倒计时结束后跳转到下一个页面、活动开始前的倒计时、倒计时提示活动结束等,而使用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实现一个酷炫的倒计时动画。在实现过程中,我们需要获取当前时间和倒计时结束时间,计算时间差,并在定时器中更新倒计时显示,并增加一些动画效果以使倒计时更加生动。
