位置: IT常识 - 正文

使用css3实现一个超浪漫的新年倒计时(css3题目)

编辑:rootadmin
使用css3实现一个超浪漫的新年倒计时

推荐整理分享使用css3实现一个超浪漫的新年倒计时(css3题目),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:css如何用,css如何实现,css3题目,css3题目,css如何实现,css如何实现,使用css3实现一个动画效果,使用css3实现一个动画效果,内容如对您有帮助,希望把文章链接给更多的朋友!

新年快到了,使用css3实现一个超浪漫的新年倒计时吧,希望大家喜欢。

目录

1 实现思路 

2 实现浪漫的心形背景

3 布局小时分钟和秒的区域

4、js倒计时 

5、然后就是将所得的小时、分钟、秒对DOM进行赋值 

6、每秒一更新 

7、补充知识点1- 倒计时为什么不写1000

8、补充知识点2- 切换页面再切回来,倒计时会疯狂跳动一下

 9、完整源代码

结语:


1 实现思路 

根据最近比较火爆的点燃你,温暖我得到启发,我可以获取浪漫的心形做为背景,彰显时间在浪漫的流金岁月中飞速度过;

然后通过水平垂直居中定位的方式,将小时,分钟,秒布局好;

采用css3的box-shadow和text-shadow对区块和字体进行更加浪漫的氛围渲染;

再利用js进行倒计时的秒级递减进行赋值,得到最终的倒计时。

2 实现浪漫的心形背景

首先寻求一张浪漫的心形背景,做为浪漫的铺垫。然后设定body的背景图片。注意这里的高度要设定为100vh,而background要设定repeat属性值,使整个页面铺满,彰显浪漫。代码如下:

body { width: 100%; height: 100vh; background: url(./bg2.png) repeat;}

3 布局小时分钟和秒的区域

这里使用水平垂直居中的方式,设定一个主区域,然后通过flex布局定制3个区块,做为小时,分钟,秒的显示。而且每个区块要通过css3做一定的阴影效果,这里采用的是box-shadow和text-shadow,(注意,这一步暂时还是假数据,不必在这一步纠结于数据,后面会有动态的)代码如下:

.outer-box { position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; display: flex; justify-content: space-between; width: 640px; height: 200px;}.box { width: 200px; height: 200px; border-radius: 50%; box-shadow: -4px -2px 163px #ff0033; color: red; text-align: center; line-height: 200px; background: rgba(0, 0, 0, 0.8); font-size: 80px; letter-spacing: 3px; text-shadow: -1px -4px #6c6775;}<div class="outer-box"> <div class="box" id="hour"> 580 <div>时</div> </div> <div class="box" id="min"> 58 <div>分</div> </div> <div class="box" id="sec"> 58 <div>秒</div> </div></div>

4、js倒计时 使用css3实现一个超浪漫的新年倒计时(css3题目)

首先已知新年时间是2022年12月31日23点59分59秒,通过把这个时间带入new Date()中得到毫秒值,与当前毫秒值进行减法操作。再以此通过将毫秒值差换算为小时,分钟和秒即可。

注意这里主要用到了除数和余数的概念,代码如下:

let yearTime = new Date('2022-12-31 23:59:59').getTime();let now = new Date().getTime();let value = yearTime - now; // 毫秒的差值let hour = Math.floor(value/(1000*60*60)); // 剩余小时数let min = Math.floor(value%(1000*60*60)/(1000*60)); // 剩余分钟数let sec = Math.floor(value%(1000*60*60)%(1000*60)/1000); // 剩余描述5、然后就是将所得的小时、分钟、秒对DOM进行赋值 

首先是通过js的document.getElementById的方式分别获取3个区块的DOM区域,然后再将上一步获取到的计算值,为DOM进行赋值。这一步赋值采用的是innerHTML的方式,代码如下:

let hourDom = document.getElementById('hour');let minDom = document.getElementById('min');let secDom = document.getElementById('sec');hourDom.innerHTML = hour + '<div>时</div>';minDom.innerHTML = min + '<div>分</div>';secDom.innerHTML = sec + '<div>秒</div>';6、每秒一更新 

这里用到了setInterval函数,通过每秒一次重新获取当前时间戳的方式,再去不断的与新年时间进行对比计算,而每次的计算的过程是一样的,都是上一步的代码。代码如下:

let countSecondFn = setInterval(() => { 。。。。。。 上一步的代码块 。。。。。。}, 980)

7、补充知识点1- 倒计时为什么不写1000

说好的倒计时,不就是一秒,也就是1000毫秒执行一次嘛,怎么写个980呢?

记得某一段时间专门统计过,一台普通手机(6C8G)的新手机,一秒大概执行10W行js代码吧。所以如果你的倒计时写在项目里,如果还用了vue / react 这些框架,那么执行一次倒计时,可能就会牵涉出不知道多少行的代码,最终才会被浏览器识别到你的代码,进而一步步渲染到页面上。

所以,如果还是写1000执行一次,那结果很可能是真正的新年钟声已经开敲了,咱们的倒计时还在继续

8、补充知识点2- 切换页面再切回来,倒计时会疯狂跳动一下

这是因为浏览器对setInterval有节约内存的特性,当你切换页面离开的时候,他就会暂时休眠,当你再切换回来的时候,浏览器就会把之前的休眠时间补上。

所以,我们只需要在监测到页面切换走的时候,将定时器停止掉,再监测浏览器被切回的时候,执行定时器即可。

这个时候你可以通过一下代码进行操作:

document.addEventListener('visibilitychange',function(){ if(document.visibilityState=='hidden'){ window.clearInterval(countSecondFn); countSecondFn = null; }else if(document.visibilityState=='visible'){ goOnCount(); }}); 9、完整源代码<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>超浪漫新年倒计时</title> <style> html, body, * { margin: 0; padding: 0; } body { width: 100%; height: 100vh; background: url(./bg2.png) repeat; } .outer-box { display: flex; justify-content: space-between; width: 640px; height: 200px; position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; } .box { width: 200px; height: 200px; background: rgba(0, 0, 0, 0.8); box-shadow: -4px -2px 163px #ff0033; color: red; text-align: center; line-height: 200px; font-size: 80px; letter-spacing: 3px; text-shadow: -1px -4px #6c6775; border-radius: 50%; } </style> </head> <body> <div class="outer-box"> <div class="box" id="hour"> 580 <div>时</div> </div> <div class="box" id="min"> 58 <div>分</div> </div> <div class="box" id="sec"> 58 <div>秒</div> </div> </div> <script> function goOnCount() { let countSecondFn = setInterval(() => { let yearTime = new Date('2022-12-31 23:59:59').getTime(); let now = new Date().getTime(); let value = yearTime - now; let hour = Math.floor(value/(1000*60*60)); let min = Math.floor(value%(1000*60*60)/(1000*60)); let sec = Math.floor(value%(1000*60*60)%(1000*60)/1000); let hourDom = document.getElementById('hour'); let minDom = document.getElementById('min'); let secDom = document.getElementById('sec'); hourDom.innerHTML = hour + '<div>时</div>'; minDom.innerHTML = min + '<div>分</div>'; secDom.innerHTML = sec + '<div>秒</div>'; }, 980) } goOnCount(); function stopCount() { window.clearInterval(countSecondFn); countSecondFn = null; } document.addEventListener('visibilitychange',function(){ if(document.visibilityState=='hidden'){ stopCount(); }else if(document.visibilityState=='visible'){ goOnCount(); } }); </script> </body></html>结语:

希望伴随着倒计时,2022年一切的不如意都早点烟消云散,但不管未来的2023年会怎么样,我们也应该勇敢的冲上去,哪怕失败了,至少我们冲过。

本文链接地址:https://www.jiuchutong.com/zhishi/300210.html 转载请保留说明!

上一篇:Java Web 开发详解(java web开发实例大全)

下一篇:2023前端面试题集(含答案)之HTML+CSS篇(一)(2023前端面试题目)

  • SEM营销策略四个层级(sem营销的主要方式)

    SEM营销策略四个层级(sem营销的主要方式)

  • 抖音主人能删除别人的评论吗(抖音主人能删除别人的表情评论吗)

    抖音主人能删除别人的评论吗(抖音主人能删除别人的表情评论吗)

  • 苹果13pro怎么关闭打开的程序(苹果13pro怎么关手电筒)

    苹果13pro怎么关闭打开的程序(苹果13pro怎么关手电筒)

  • 快手怎么设置抽奖活动(快手怎么设置抽奖在主页)

    快手怎么设置抽奖活动(快手怎么设置抽奖在主页)

  • 完美解码有什么用(完美解码什么使用内置滤镜软件)

    完美解码有什么用(完美解码什么使用内置滤镜软件)

  • qq长图怎么弄(qq长图怎么弄好像没有了)

    qq长图怎么弄(qq长图怎么弄好像没有了)

  • 微信怎么换成其他图标(微信怎么换成其他头像)

    微信怎么换成其他图标(微信怎么换成其他头像)

  • 实况照片有什么用(实况照片什么意思)

    实况照片有什么用(实况照片什么意思)

  • 补手机卡去哪里补(补手机卡去哪里办理)

    补手机卡去哪里补(补手机卡去哪里办理)

  • 手机照片jpg格式是什么意思(手机照片jpg格式怎么弄)

    手机照片jpg格式是什么意思(手机照片jpg格式怎么弄)

  • 小米放大器pro网速很慢(小米放大器pro网络连接超时的原因)

    小米放大器pro网速很慢(小米放大器pro网络连接超时的原因)

  • wifi搭桥怎么设置(无线网络搭桥设置步骤)

    wifi搭桥怎么设置(无线网络搭桥设置步骤)

  • 手机在线指的是什么(手机在线和在线什么意思)

    手机在线指的是什么(手机在线和在线什么意思)

  • 小米快应用服务框架有什么用(小米快应用服务框架怎么关闭)

    小米快应用服务框架有什么用(小米快应用服务框架怎么关闭)

  • 手机怎么恢复qq聊天记录(手机怎么恢复qq删除的说说)

    手机怎么恢复qq聊天记录(手机怎么恢复qq删除的说说)

  • 拼多多在哪儿邀请新人(拼多多如何邀人)

    拼多多在哪儿邀请新人(拼多多如何邀人)

  • 西门子sf灯亮怎么处理(西门子sf红灯常亮)

    西门子sf灯亮怎么处理(西门子sf红灯常亮)

  • 农行etc蓝牙和手机蓝牙连接不上(农行etc蓝牙和手机连接)

    农行etc蓝牙和手机蓝牙连接不上(农行etc蓝牙和手机连接)

  • lldal00什么型号(lldal00是华为什么型号手机)

    lldal00什么型号(lldal00是华为什么型号手机)

  • 怎么开通旺铺(旺店交易怎么开通)

    怎么开通旺铺(旺店交易怎么开通)

  • 如何将Win11笔记本电脑连接到电视(如何将win11笔记本连接到家庭打印机上)

    如何将Win11笔记本电脑连接到电视(如何将win11笔记本连接到家庭打印机上)

  • 让她/他心动的告白,页面制作(9个页面+链接+代码,原生HTML+CSS+JS实现)(你让他心动他让你心安)

    让她/他心动的告白,页面制作(9个页面+链接+代码,原生HTML+CSS+JS实现)(你让他心动他让你心安)

  • 【学Vue就跟玩一样】Vue中的路由与多种守卫(vue要怎么学)

    【学Vue就跟玩一样】Vue中的路由与多种守卫(vue要怎么学)

  • 小规模企业收入怎么做账
  • 别人公司过账用自己的银行卡会查吗
  • 新公司成立需要刻哪些章
  • 审计调整分录做在哪一年
  • 管理会计期末存货计算公式
  • 用友t3普及版价格
  • 住宿税率是多少 5%
  • 用友u8如何计提折旧生成凭证
  • 银行承兑汇票背书可以拆分
  • 建筑企业应交哪几种税
  • 现金折扣税务筹划
  • 员工借款怎么入账
  • 附加税按实际缴纳计提吗
  • 年底结账会计处理
  • 住房公积金如何在手机上提取
  • 土地证是商业用地
  • 辅导期一般纳税人预缴增值税
  • 拍卖中,必须规定一切税费由买受人承担吗?
  • 物业收取的滞纳金怎么算
  • 公司购买理财产品计入什么科目
  • 委托付款分录
  • 光伏发电项目发电户是否可以享受小规模优惠政策
  • 存货盘亏损失
  • 流动资金借款是一般借款还是专门借款
  • 网络共享每次都要输入密码
  • 在Win7系统中,文件的属性包括
  • 一般纳税人销售二手车增值税税率
  • 收购发票哪一联做帐
  • Windows11电脑更新后冲不上电
  • linux vim
  • nodejs安装与配置
  • html制作网页教程
  • thinkphp 模块
  • 前端种类
  • open开放的意思吗
  • ps怎么把多余的p掉
  • php 用户
  • 资产负债表中应付账款项目应根据什么填制
  • 个人所得税租房专项扣除标准
  • 普票红冲要不要去收回发票联?
  • sql 附加数据库
  • 外购商品职工福利进项税额转出如何记账?
  • 消费税是怎样征收的
  • 会计销售返利处理流程
  • 记账凭证错误的更正方法
  • 固定资产税前一次性扣除会计处理与税务处理
  • 个体工商户法人可以变更吗?
  • 每个月房租
  • 现金流动负债比率越大越好吗
  • 政府非税收入项目挂接流程图
  • 日常费用报销管理制度
  • 财务费用利息收入怎么记账
  • 购入固定资产中的增值税
  • 资产评估费怎么收
  • 机票 进项抵扣
  • Windows环境下,在给文件命名时( )
  • mysql count详解及函数实例代码
  • window10怎么设置蓝牙
  • openssl安装教程
  • 硬盘安装操作系统出现,两个操作系统怎么选择
  • chia 如何双挖
  • debian 使用
  • ie8怎么设置默认ie7模式
  • android真机调试解析包错误
  • 给自己的网站制作软件
  • perl语言基本命令
  • opengl绘制坐标轴
  • html里id
  • android aoa
  • flask开发实例
  • jquery属性选择器的基本
  • javascript入门教程
  • javascript要怎么学
  • javascript教程 csdn
  • each和each
  • 南阳市税务稽查局举报电话
  • 芜湖市房产退契税是什么政策
  • 南京国民政府统治和开辟革命新道路
  • 宣传费是否要交消费税
  • 税务规范性文件制定管理办法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设