需要实现的效果:
这个要利用setInterval()定时器调用获取时间的函数来实现,同时要学会使用时间戳。完整代码如下(包括布局代码):
注释写得很详细,不明白的可以仔细看看注释哟(^U^)ノ~YO
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>倒计时案例</title>
<!-- 样式 -->
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 190px;
height: 95px;
background-color: #f6472d;
margin: 300px auto;
box-sizing: border-box;
padding-top: 10px;
}
.box p {
font-size: 14px;
color: #fff;
text-align: center;
}
.box span {
display: block;
float: left;
width: 30px;
height: 30px;
background-color: #2e322c;
margin: 10px 5px;
color: #fff;
text-align: center;
line-height: 30px;
font-weight: 700;
}
.box span:nth-of-type(1) {
margin-left: 40px;
}
</style>
</head>
<body>
<script>
window.onload = function() {
// 获取元素
var hours = document.querySelector('.hours');
var minutes = document.querySelector('.minutes');
var seconds = document.querySelector('.seconds');
// 先调用一次这样刚刷新页面的时候就不会显示初始的11 12 13了
var result = getTime('2022-4-28 18:00:00');
hours.innerHTML = result[0];
minutes.innerHTML = result[1];
seconds.innerHTML = result[2];
// 调用获取时间的函数
window.setInterval(function() {
var result = getTime('2022-4-28 18:00:00');
hours.innerHTML = result[0];
minutes.innerHTML = result[1];
seconds.innerHTML = result[2];
}, 1000)
// 封装一个获取时间的函数
function getTime(timer) {
var arr = [];
// 获取现在的毫秒数
var nowTime = +new Date();
// 获取指定时间的时间戳
var afterTime = +new Date(timer);
// 相减得到相差的毫秒数
var times = (afterTime - nowTime) / 1000;
// 计算时间
// 小时
var hour = parseInt(times / 60 / 60 % 24);
hour = hour < 10 ? '0' + hour : hour;
hour = String(hour)
arr.push(hour);
// 分钟
var minute = parseInt(times / 60 % 60);
minute = minute < 10 ? '0' + minute : minute;
minute = String(minute)
arr.push(minute);
// 秒数
var second = parseInt(times % 60);
second = second < 10 ? '0' + second : second;
second = String(second)
arr.push(second);
// 返回时间数组
return arr;
}
}
</script>
<div class="box">
<p>本场距离结束还剩</p>
<!-- 下面的时间模块 -->
<span class="hours">11</span>
<span class="minutes">12</span>
<span class="seconds">13</span>
</div>
</body>
</html>