今天的小案例需要做一个倒计时的效果
我们的时分秒需要一直进行倒计时,然后我们的页面颜色需要根据定时器的操作来进行更换,首先我们还是可以来分析一下我们的HTML步骤
- <div class="countdown">
- <p class="next">今天是2222年2月22日p>
- <p class="title">下班倒计时p>
- <p class="clock">
- <span id="hour">00span>
- <i>:i>
- <span id="minutes">25span>
- <i>:i>
- <span id="scend">20span>
- p>
- <p class="tips">18:30:00下课p>
- div>
在然后就让我们来修饰一下这个案例使用CSS
- .countdown {
- width: 240px;
- height: 305px;
- text-align: center;
- line-height: 1;
- color: #fff;
- background-color: brown;
- /* background-size: 240px; */
- /* float: left; */
- overflow: hidden;
- }
-
- .countdown .next {
- font-size: 16px;
- margin: 25px 0 14px;
- }
-
- .countdown .title {
- font-size: 33px;
- }
-
- .countdown .tips {
- margin-top: 80px;
- font-size: 23px;
- }
-
- .countdown small {
- font-size: 17px;
- }
-
- .countdown .clock {
- width: 142px;
- margin: 18px auto 0;
- overflow: hidden;
- }
-
- .countdown .clock span,
- .countdown .clock i {
- display: block;
- text-align: center;
- line-height: 34px;
- font-size: 23px;
- float: left;
- }
-
- .countdown .clock span {
- width: 34px;
- height: 34px;
- border-radius: 2px;
- background-color: #303430;
- }
-
- .countdown .clock i {
- width: 20px;
- font-style: normal;
- }
下面就是我们的JS部分了
我们第一部先来做这个页面的随机颜色,这块就是我们JS基础的部分了,先使用方法来定义一个随机函数,如果是true,我们就返回纯白色,如不是我们就来返回随机的颜色
第一步是纯白色的操作
既然需要返回随机的颜色我们就先需要创建一个数组,然后for循环遍历这条数组只会,来随机这个素组的索引号
然后返回这个字符串str
如是flase呢我们就需要返回随机一个的十进制的颜色,最后返回的结果也是使用我们模板字符串进行改变页面颜色
然后我们需要获取html里面的颜色来进行样式修改变成随机的颜色,下面再使用定时器,讲我们上面随机颜色的步骤放到定时器里面,并且设置每隔3s就换一次颜色的操作
第二步操作:我们需要封装一个函数getCountTime,然后进行相关样式的获取,为了就是要把盒子死数据改成活数据,所以当我们获取完毕后,就需要定义一个实例的函数,然后讲我们的数据改成当前时间比如我现在是2023/6/8,1:54,那么就会显示出这个时间点
然后需要指定一个定时器来完成每隔一秒实现倒计时的操作
第三步操作我们先获取现在的时间戳,然后获取以后的时间戳,当我们得到剩余时间,需要转换成秒数,我已经把公式写道下面来了,大家可以自行观看,然后我们需要进行补0操作,为什么要进行补0操作,为了让我们时间显示更美观,比如08,09,当只有一位数时候,在前面就加上一个0,而这个操作已经用三元判断写出来了!不懂我们去w3c去查查资料什么叫三元运算符
最后我们需要把时间来写如这个盒子,所以我们得先获取三个盒子,然后通过innerHTML来获取当前时分秒的操作
后面定时器需要放一个函数,不然操作比较麻烦,我这个是比较全面的,写一个函数封装道里面,定时器每距离一秒进行倒计时操作
- // 随机颜色函数
- // 1. 自定义一个随机颜色函数
- function getRandomColor(flag = true) {
- if (flag) {
- // 3. 如果是true 则返回 #ffffff
- let str = '#'
- let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
- // 利用for循环随机抽6次 累加到 str里面
- for (let i = 1; i <= 6; i++) {
- // 每次要随机从数组里面抽取一个
- // random 是数组的索引号 是随机的
- let random = Math.floor(Math.random() * arr.length)
- // str = str + arr[random]
- str += arr[random]
- }
- return str
-
- } else {
- // 4. 否则是 false 则返回 rgb(255,255,255)
- let r = Math.floor(Math.random() * 256) // 55
- let g = Math.floor(Math.random() * 256) // 89
- let b = Math.floor(Math.random() * 256) // 255
- return `rgb(${r},${g},${b})`
- }
-
- }
- //页面刷新得到随机的函数
- const countdown=document.querySelector('.countdown')
- countdown.style.background=getRandomColor()
- setInterval(function(){
- countdown.style.background=getRandomColor()
- },3000)
- function getCountTime(){
- const next=document.querySelector('.next')
- const date=new Date()
- next.innerHTML=date.toLocaleString()
- setInterval(function(){
- const date=new Date()
- next.innerHTML=date.toLocaleString()
- },1000)
- //1.得到当前的时间戳
- const now=+new Date()
- //2.得到将来的时间戳
- const last=+new Date('2023-7-1 18:30:00')
- //3.得到剩余时间戳count,记得转换为秒数
- const count=(last-now)/1000
- // console.log(count)
- // 4. 转换为时分秒
- // h = parseInt(总秒数 / 60 / 60 % 24) // 计算小时
- // m = parseInt(总秒数 / 60 % 60); // 计算分数
- // s = parseInt(总秒数 % 60);
- // let d = parseInt(count / 60 / 60 / 24) // 计算当前秒数
- let h = parseInt(count / 60 / 60 % 24)
- h = h < 10 ? '0' + h : h
- let m = parseInt(count / 60 % 60)
- m = m < 10 ? '0' + m : m
- let s = parseInt(count % 60)
- s = s < 10 ? '0' + s : s
- console.log(h, m, s)
- const hour=document.querySelector('#hour')
- const minutes=document.querySelector('#minutes')
- const scend=document.querySelector('#scend')
- hour.innerHTML=h
- minutes.innerHTML=m
- scend.innerHTML=s
- }
- //先调用一次
- getCountTime()
- //开启定时器
- setInterval(getCountTime,1000)
-
今天的案例就到这块,记得二连噢!!,谢谢大家了!