JS实现倒计时是一种常见的前端实现方式,在各类网站和应用中均有广泛应用。下面是JS实现倒计时的完整攻略:
步骤一:准备页面结构
首先需要在HTML页面中准备好倒计时所需的HTML结构,包括倒计时DOM元素的容器,每个倒计时数字占据的DOM元素等。
例如,下面是一个简单的倒计时页面结构示例:
<div class="countdown-wrapper">
<div class="countdown-item">
<span class="countdown-item__number days"></span>
<span class="countdown-item__text">Days</span>
</div>
<div class="countdown-item">
<span class="countdown-item__number hours"></span>
<span class="countdown-item__text">Hours</span>
</div>
<div class="countdown-item">
<span class="countdown-item__number minutes"></span>
<span class="countdown-item__text">Minutes</span>
</div>
<div class="countdown-item">
<span class="countdown-item__number seconds"></span>
<span class="countdown-item__text">Seconds</span>
</div>
</div>
步骤二:编写JS代码
接下来需要编写JS代码实现倒计时的功能。具体实现方式如下:
- 倒计时定时器
首先需要通过JS代码设置一个定时器,在每一秒钟的时间间隔中更新倒计时数字的显示。
例如,下面是一个简单的倒计时定时器:
function countdown() {
const targetDate = new Date('2022-01-01T00:00:00Z');
const now = new Date();
const timeDiff = targetDate - now;
const days = Math.floor(timeDiff / 1000 / 60 / 60 / 24);
const hours = Math.floor(timeDiff / 1000 / 60 / 60 % 24);
const minutes = Math.floor(timeDiff / 1000 / 60 % 60);
const seconds = Math.floor(timeDiff / 1000 % 60);
document.querySelector('.days').innerHTML = days;
document.querySelector('.hours').innerHTML = hours;
document.querySelector('.minutes').innerHTML = minutes;
document.querySelector('.seconds').innerHTML = seconds;
}
setInterval(countdown, 1000);
- 数字补零
为了使倒计时数字显示更加美观,通常需要对数字进行补零操作。例如,在小时数或分钟数为1位数时,需要在左侧补0,使其显示为2位数字。
例如,下面是一个补零函数的示例:
function addLeadingZero(num) {
return num < 10 ? '0' + num : num;
}
在倒计时代码中,可以使用该函数对小时数和分钟数进行补零操作。
步骤三:添加CSS样式
最后需要添加CSS样式,美化倒计时的显示效果。
例如,下面是一个简单的倒计时CSS样式:
.countdown-wrapper {
display: flex;
justify-content: center;
align-items: center;
font-size: 4rem;
margin-top: 50px;
}
.countdown-item {
display: flex;
flex-direction: column;
align-items: center;
margin: 0 10px;
}
.countdown-item__number {
font-family: monospace;
font-size: 5rem;
color: #222;
}
.countdown-item__text {
font-size: 1.2rem;
color: #777;
text-transform: uppercase;
}
示例说明
下面是两个简单的示例说明:
示例一:倒计时到某一具体日期
例如,计算距离某一具体日期的倒计时:
function countdown() {
const targetDate = new Date('2022-01-01T00:00:00Z');
const now = new Date();
const timeDiff = targetDate - now;
const days = Math.floor(timeDiff / 1000 / 60 / 60 / 24);
const hours = Math.floor(timeDiff / 1000 / 60 / 60 % 24);
const minutes = Math.floor(timeDiff / 1000 / 60 % 60);
const seconds = Math.floor(timeDiff / 1000 % 60);
document.querySelector('.days').innerHTML = days;
document.querySelector('.hours').innerHTML = addLeadingZero(hours);
document.querySelector('.minutes').innerHTML = addLeadingZero(minutes);
document.querySelector('.seconds').innerHTML = addLeadingZero(seconds);
}
setInterval(countdown, 1000);
该示例中,倒计时终点时间为2022年1月1日。每1秒钟更新一次倒计时显示。
示例二:倒计时剩余时间
例如,计算今天剩余时间的倒计时:
function countdown() {
const now = new Date();
const endOfDay = new Date(now);
endOfDay.setHours(24, 0, 0, 0);
const timeDiff = endOfDay - now;
const hours = Math.floor(timeDiff / 1000 / 60 / 60 % 24);
const minutes = Math.floor(timeDiff / 1000 / 60 % 60);
const seconds = Math.floor(timeDiff / 1000 % 60);
document.querySelector('.hours').innerHTML = addLeadingZero(hours);
document.querySelector('.minutes').innerHTML = addLeadingZero(minutes);
document.querySelector('.seconds').innerHTML = addLeadingZero(seconds);
}
setInterval(countdown, 1000);
该示例中,倒计时终点时间为今晚24点。每1秒钟更新一次倒计时显示。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现倒计时(天数、时、分、秒) - Python技术站