位置: 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前端面试题目)

  • 微信上的爆款产品,能流行起来的逻辑是什么?(微信上的爆款是真的假的)

    微信上的爆款产品,能流行起来的逻辑是什么?(微信上的爆款是真的假的)

  • 微信不是群主怎么拉人进群(微信不是群主怎么艾特所有人)

    微信不是群主怎么拉人进群(微信不是群主怎么艾特所有人)

  • 在淘宝怎么投诉举报商家?(在淘宝怎么投诉举报商家上架本家未经许可上架本家产品)

    在淘宝怎么投诉举报商家?(在淘宝怎么投诉举报商家上架本家未经许可上架本家产品)

  • qq昵称修改失败36是啥(qq名称修改失败是怎么回事)

    qq昵称修改失败36是啥(qq名称修改失败是怎么回事)

  • c32空开是多少安(c32空开是什么意思)

    c32空开是多少安(c32空开是什么意思)

  • 抖音首发是什么意思(抖音短视频首发啥意思)

    抖音首发是什么意思(抖音短视频首发啥意思)

  • 三星note10有红外线功能吗(三星note10红外遥控器)

    三星note10有红外线功能吗(三星note10红外遥控器)

  • hdmi输入和输出怎么区分(hdmi输入和输出接口)

    hdmi输入和输出怎么区分(hdmi输入和输出接口)

  • 读写手机存储啥意思(读写手机内存在哪里?)

    读写手机存储啥意思(读写手机内存在哪里?)

  • cpu镜头是什么意思(非cpu镜头是什么意思)

    cpu镜头是什么意思(非cpu镜头是什么意思)

  • imel码是什么(imel码是什么意思泄露了会怎么样呢)

    imel码是什么(imel码是什么意思泄露了会怎么样呢)

  • 微信支付首选怎么设置(微信支付 首选)

    微信支付首选怎么设置(微信支付 首选)

  • 毒app可以换尺码吗(毒能不能换尺码)

    毒app可以换尺码吗(毒能不能换尺码)

  • 京东已评价怎么删除记录(京东已评价怎么修改)

    京东已评价怎么删除记录(京东已评价怎么修改)

  • vivoiqoo能开空调吗(vivoiq00能不能开空调)

    vivoiqoo能开空调吗(vivoiq00能不能开空调)

  • 华为手机一开屏就出现新闻怎么办(华为手机一开屏就弹出广告怎么办)

    华为手机一开屏就出现新闻怎么办(华为手机一开屏就弹出广告怎么办)

  • 苹果xr可以用30w快充吗(苹果XR可以用几年)

    苹果xr可以用30w快充吗(苹果XR可以用几年)

  • 快手发的作品为什么别人看不到(快手发的作品为什么会放大)

    快手发的作品为什么别人看不到(快手发的作品为什么会放大)

  • 电池优化是允许还是不允许(忽略电池优化)

    电池优化是允许还是不允许(忽略电池优化)

  • miui10远程协助在哪里(miui9远程协助)

    miui10远程协助在哪里(miui9远程协助)

  • vivo手机反向充电怎么充(vivo手机反向充电怎么打开)

    vivo手机反向充电怎么充(vivo手机反向充电怎么打开)

  • 爱剪辑能剪辑音乐吗(爱剪辑能剪辑音频文件吗)

    爱剪辑能剪辑音乐吗(爱剪辑能剪辑音频文件吗)

  • 抖音视频保存相册失败(抖音视频保存相册不完整)

    抖音视频保存相册失败(抖音视频保存相册不完整)

  • win10下怎么设置OneDrive云删除文件时不要警告?(win10系统怎么设置)

    win10下怎么设置OneDrive云删除文件时不要警告?(win10系统怎么设置)

  • “讲述人”功能(讲述人功能怎么关闭)

    “讲述人”功能(讲述人功能怎么关闭)

  • CVPR 2022 最全整理:论文分方向汇总 / 代码 / 解读 / 直播 / 项目(更新中)(cvpr2020结果)

    CVPR 2022 最全整理:论文分方向汇总 / 代码 / 解读 / 直播 / 项目(更新中)(cvpr2020结果)

  • 增值税发票网上勾选平台
  • 购买免税产品的app
  • 以房抵债如何计算契税?
  • 所得税汇算补提所得税会计分录
  • 工矿区城市维护建设税税率
  • 用友t3凭证日期怎么自动排序
  • 不动产租赁属于经营租赁吗
  • 契税为什么计入成本
  • 普通发票作废影响额度吗
  • 个人以房产进行交易
  • 财政收回项目资金的整改报告
  • 当月抵扣的发票可以下个月记账吗
  • 退货的产品会重新包装吗
  • 专项补助资金补助的领域包括
  • 公司借别的公司的钱再借给别的公司
  • 期末未缴税额为什么会有数据
  • 仓储费专用发票可以抵扣吗?
  • 基建人员工资计入哪个科目
  • 应收账款的周转率怎么算
  • 个体户开票要交印花税?
  • 账表不一致的原因和根源
  • 公司帮员工缴纳个税,不从工资里扣,如何做账
  • 核定应纳税额的具体程序和方法
  • 电梯销售和安装怎么核算收入
  • 清华同方bios通用密码(thtfpc)
  • win11文件类型怎么改
  • win7电脑怎么样
  • 增值税专用发票有几联?
  • ElementPlusError:[ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档
  • 应收账款转让的风险
  • 外购货物用于不动产在建工程
  • 购入研发设备
  • 衍生金融资产会计科目
  • 坎伯兰森林西部
  • kindeditor编辑器图片上传
  • 金融商品转让业务包括
  • 利息收入发票能抵扣吗
  • 前端es6是什么意思
  • 论文笔记模板
  • 使用uni-app开发网站
  • 入库税款异常怎么处理
  • 计提怎么理解
  • 设备调试费是什么税
  • 固定资产清理净残值怎么处理
  • 怎么看企业用哪种软件
  • 业务招待费是否计入管理费用
  • 固定资产货币化,货币资产保险化,保险资产信托化
  • 在mysql中设置事务保存点
  • 会计年度对账
  • 跨年度少计摊销怎么做账
  • 内含报酬率的意义
  • 利息收入是一级科目还是
  • 免税收入不征税收入计入收入总额吗
  • 固定资产怎么入费用
  • 拆迁置换安置房
  • 成本发票未到如何结转成本
  • 固定资产出售的收入属于收入吗
  • 工程材料增值税抵扣比例
  • 现金支付现金股利
  • 上期留抵本期抵扣怎么做分录
  • 其他应收款如何计提坏账准备
  • 返聘退休人员工资标准
  • 一个企业建账需要注意些什么
  • 企业发生存货盘盈时计入营业外收入科目
  • 公司的应付票据
  • 私企需要计提盈余公积吗
  • 企业进行长期投资的意义
  • freebsd怎么样
  • win8系统怎么更改无线网络IP
  • linux安装docker-compose
  • 浅析我国国防现状
  • 安卓版影音播放器哪个好用
  • javascript例题
  • js clearInterval()方法的定义和用法
  • JavaScript事件类型中UI事件详解
  • jquery.flot
  • 税务局 章
  • 工商跟税务的区别
  • 青岛税务局网上办税厅app
  • 税务金三系统什么意思?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设