使用JSAPl来做一个倒计时的效果

news/2024/11/15 7:06:31/

今天的小案例需要做一个倒计时的效果

 我们的时分秒需要一直进行倒计时,然后我们的页面颜色需要根据定时器的操作来进行更换,首先我们还是可以来分析一下我们的HTML步骤

<div class="countdown"><p class="next">今天是2222年2月22日</p><p class="title">下班倒计时</p><p class="clock"><span id="hour">00</span><i>:</i><span id="minutes">25</span><i>:</i><span id="scend">20</span></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来获取当前时分秒的操作

后面定时器需要放一个函数,不然操作比较麻烦,我这个是比较全面的,写一个函数封装道里面,定时器每距离一秒进行倒计时操作

<script>// 随机颜色函数// 1. 自定义一个随机颜色函数function getRandomColor(flag = true) {if (flag) {// 3. 如果是true 则返回 #fffffflet 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)  // 55let g = Math.floor(Math.random() * 256)  // 89let b = Math.floor(Math.random() * 256)  // 255return `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 : hlet m = parseInt(count / 60 % 60)m = m < 10 ? '0' + m : mlet s = parseInt(count % 60)s = s < 10 ? '0' + s : sconsole.log(h, m, s)const hour=document.querySelector('#hour')const minutes=document.querySelector('#minutes')const scend=document.querySelector('#scend')hour.innerHTML=hminutes.innerHTML=mscend.innerHTML=s}//先调用一次getCountTime()//开启定时器setInterval(getCountTime,1000)</script>

今天的案例就到这块,记得二连噢!!,谢谢大家了!


http://www.ppmy.cn/news/269627.html

相关文章

【Swift基础语法SnapKit自动布局库的使用】

文章目录 前言playgroundvar 和 let-元组string-字典-数组闭包enum类和对象属性类UI和OC的区别&#xff0c;更简洁懒加载全局文件snap kit的使用top 和 topMargin 总结 前言 最近在学习swift和写项目&#xff0c;给我的感受&#xff0c;语言简洁和安全&#xff0c;在学习了基础…

MySQL基础篇——MySQL数据库的介绍、下载、安装【文末送书】

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.数据库相关概念 1.什么是数据库 2.什么是数据库管理系统 3.SQL是什么 …

JDBC连接数据库步骤(入门到进阶全)

目录 一、JDBC是什么&#xff1f; 二&#xff0c;JDBC的本质是什么&#xff1f; 为什么要用面向接口编程&#xff1f; 三、JDBC实现原理 四、使用idea开发JDBC代码配置驱动 ​编辑 五、JDBC编程六步概述 六、JDBC编程实现 1.插入实现 2.删除与更新实现 3 .类加载的方式注…

《Python程序设计与算法基础教程(第二版)》江红 余青松 课后选择题 课后填空题答案

目录 第一章一、选择题二、填空题 第二章一、选择题二、填空题 第三章一、选择题二、填空题 第四章一、选择题二、填空题 第五章一、选择题二、填空题 第八章一、选择题二、填空题 第一章 一、选择题 Python语言属于 C A.机器语言 B.汇编语言 C.高级语言 D.以上都不是 在下列…

HCIA-NAT

目录 NAT&#xff1a;网络地址转换 NAT原理&#xff1a; NAT转换原理图&#xff1a; 静态NAT 静态NAT的工作原理&#xff1a; 静态NAT配置命令 静态NAT配置实例&#xff1a; 动态NAT 动态NAT的工作原理 动态NAT&#xff1a; 动态NAT配置命令 动态NAT案例 NAPT NA…

HTC 系列手机解锁,刷recovery以及刷Rom教程

安智论坛中有很多关于android的实用帖子&#xff0c;这里转载一个 HTC系列的手机的解锁&#xff0c;刷recovery以及刷Rom教程

HTC手机解锁 root 刷机的各种问题

新入手了一部HTC手机&#xff0c;一直为ROOT和刷机头疼着&#xff0c;因为我是做安卓开发的。 以前用的那部手机不是高端机&#xff0c;所以当时ROOT很简单。 而HTC手机ROOT之前要进行解锁操作&#xff0c;所以小弟在此总结下HTC的ROOT&#xff1a; ROOT之前要解锁。 建议大家…

htc one s 进入bootloadert和recovery方式

首先要是安装htc one s驱动 把手机设置为USB调试 下载adb.exe文件 adb reboot-bootloader (进入bootloader&#xff09; adb reboot recovery &#xff08;进入recovery&#xff09; 建立一个bootloader.bat文件在adb.exe目录 然后 输入一行命令 adb reboot-boo…