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

  • 迅雷超级会员和白金会员区别(迅雷超级会员和百度网盘超级会员)

    迅雷超级会员和白金会员区别(迅雷超级会员和百度网盘超级会员)

  • 华为nova7pro支持无线充电功能吗(华为nova7pro支持nfc功能吗)

    华为nova7pro支持无线充电功能吗(华为nova7pro支持nfc功能吗)

  • iqoou1安兔兔跑分是多少

    iqoou1安兔兔跑分是多少

  • 电脑版怎么设置页面大小为a4(华为浏览器电脑版怎么设置)

    电脑版怎么设置页面大小为a4(华为浏览器电脑版怎么设置)

  • 抖音怎么设置下载视频权限(抖音怎么设置下滑自动播放下一条)

    抖音怎么设置下载视频权限(抖音怎么设置下滑自动播放下一条)

  • 微信专清里的文件能删除吗(微信专清里的文件怎么辩别发送与接收)

    微信专清里的文件能删除吗(微信专清里的文件怎么辩别发送与接收)

  • vivo微信美颜视频怎么设置(vivo微信美颜视频聊天怎么美颜)

    vivo微信美颜视频怎么设置(vivo微信美颜视频聊天怎么美颜)

  • office可以打开pdf吗(office可以打开PDF不)

    office可以打开pdf吗(office可以打开PDF不)

  • 微信运动更新规则(微信运动更新准不准)

    微信运动更新规则(微信运动更新准不准)

  • wan口未插线怎么回事(wan口未插网线但是wan灯是亮的)

    wan口未插线怎么回事(wan口未插网线但是wan灯是亮的)

  • 三星s20和s20+和s20u的区别(三星s20和s20+哪个好)

    三星s20和s20+和s20u的区别(三星s20和s20+哪个好)

  • 拼多多账号可以在两个手机上同时使用吗(拼多多账号可以在几个手机上登录)

    拼多多账号可以在两个手机上同时使用吗(拼多多账号可以在几个手机上登录)

  • 笔记本一晚上不关机可以吗(笔记本一晚上不关机会怎么样)

    笔记本一晚上不关机可以吗(笔记本一晚上不关机会怎么样)

  • 快手怎么重新编辑文字(快手怎么重新编辑封面)

    快手怎么重新编辑文字(快手怎么重新编辑封面)

  • 小米8支持双4g待机吗(小米8支持双电信吗?)

    小米8支持双4g待机吗(小米8支持双电信吗?)

  • 怎样撤回已发出的微信(怎样撤回已发出的转账)

    怎样撤回已发出的微信(怎样撤回已发出的转账)

  • 苹果下载按侧键怎么关(苹果下载按侧键怎么设置)

    苹果下载按侧键怎么关(苹果下载按侧键怎么设置)

  • 手机放着不用会坏吗(手机放着不用会老化吗)

    手机放着不用会坏吗(手机放着不用会老化吗)

  • 华为nova5pro耳机插哪里(华为nova5pro耳机孔在哪里)

    华为nova5pro耳机插哪里(华为nova5pro耳机孔在哪里)

  • soul关注后怎么聊天(soul关注了怎么进对方聊天室)

    soul关注后怎么聊天(soul关注了怎么进对方聊天室)

  • 火山怎么屏蔽一个人(火山怎么屏蔽一个粉丝)

    火山怎么屏蔽一个人(火山怎么屏蔽一个粉丝)

  • 怎样连接收款语音播报器(如何用手机连接收款语音播报)

    怎样连接收款语音播报器(如何用手机连接收款语音播报)

  • 喵喵机是干什么用的(喵喵机是用来干什么的)

    喵喵机是干什么用的(喵喵机是用来干什么的)

  • 如何下载电影到手机(如何下载电影到电脑上)

    如何下载电影到手机(如何下载电影到电脑上)

  • 苹果4.7和5.5的区别(苹果74.7和5.5的区别)

    苹果4.7和5.5的区别(苹果74.7和5.5的区别)

  • 拼多多宝刀可以用几次(拼多多砍价可以买宝刀吗)

    拼多多宝刀可以用几次(拼多多砍价可以买宝刀吗)

  • bose无线耳机怎么连接蓝牙(bose无线耳机怎么调节音量)

    bose无线耳机怎么连接蓝牙(bose无线耳机怎么调节音量)

  • 打印机转动有嘎嘎异响(打印机转动有嘎嘎异响能正常打印)

    打印机转动有嘎嘎异响(打印机转动有嘎嘎异响能正常打印)

  • 用什么方法看网速?怎么看网速?(要看网怎么找)

    用什么方法看网速?怎么看网速?(要看网怎么找)

  • 在白雪覆盖的高地上奔跑的雪兔,苏格兰 (© SCOTLAND: The Big Picture/Minden Pictures)(在白雪覆盖的地方 什么歌)

    在白雪覆盖的高地上奔跑的雪兔,苏格兰 (© SCOTLAND: The Big Picture/Minden Pictures)(在白雪覆盖的地方 什么歌)

  • OpenCV笔记:cv2.VideoCapture 完成视频的跳帧输出操作(cv2.error:opencv(3.4.2))

    OpenCV笔记:cv2.VideoCapture 完成视频的跳帧输出操作(cv2.error:opencv(3.4.2))

  • 税务局防范税收风险的措施
  • 计提企业所得税分录
  • 股东投资款给自己发工资如何处理?
  • 固定资产账务处理实操
  • 企业职工遣散费标准
  • 哪些罚款不能进行所得税税前扣除?
  • 产品成本核算的一般程序
  • 进口关税专用缴款书怎么做分录
  • 财产税放在哪个科目
  • 纳税人跨县(市、区)是指
  • 失控包括
  • 我的初级备考经验--相信自己
  • 售后回租产生的利息怎么做账
  • 挂名财务负责人会坐牢吗
  • 固定资产清理账户结构
  • 周转材料盘点报告单
  • mac输入法打不出简体
  • 通行费怎么认证
  • 年底返利账务处理
  • 苹果电脑itu
  • mac的xcode使用教程
  • 收到退回付款货款
  • 怎么将电脑硬盘做成移动硬盘
  • 破产资产拍卖
  • 库存现金意思
  • wordpress优化加快的好多个关键点
  • thinkphp 数据库查询
  • 确认应付职工薪酬是借方还是贷方
  • 禁止扣除项目有什么
  • 分支机构分摊税款的计算
  • 灰狼算法的改进
  • 销售金额环比
  • uniapp宽度
  • 工程施工科目下的间接费用怎么使用
  • 商业预付卡可以报销吗
  • 二元运算例子
  • layui框架模板
  • 本地住宿费能报销吗
  • 织梦常用调用标签
  • zabbix 网络监控
  • mongodb 安装
  • 实收资本何时入账
  • 经营性现金流量为什么要加上折旧
  • 个人开技术服务费
  • 利得和损失计入所有者权益的情况
  • 固定资产改造多少直接进费用
  • 对外贸易出口公司
  • 企业安全生产费用可由企业用于购置
  • 管理费用有负数怎么结总账
  • 租车费报销管理规定
  • 企业购买黄金该交什么税
  • 企业利润的构成内容
  • 印花税属于什么科目
  • 变更法人需要什么条件
  • 小企业的建账流程
  • mysql绿色版安装配置教程
  • linux文件系统损坏
  • xp系统完全删除打印机驱动
  • ubuntu20.04安装vnc
  • centos6 systemctl
  • 如何让windows7更快
  • centos7.6有线连接
  • silent.exe - silent是什么进程 有什么用
  • pniopcac.exe是什么
  • 从五方面解析Linux防火墙框架问题
  • win10系统窗口贴靠操作的快捷键
  • ExtJS如何设置与获取radio控件的选取状态
  • gitlab管理员账号 审批
  • js遮罩效果
  • 批处理文件是将需要连续使用的可多次重复使用的
  • dedecms建站操作
  • js实现滚动条
  • unity3d初学者教程视频
  • jquery Deferred 快速解决异步回调的问题
  • string和stringbuffer创建后都可以修改
  • 税务怎么在外网申报
  • 进口小麦关税税率是多少
  • ecco made in china
  • 税务局的纳税服务中心是干什么的
  • 平安银行股份有限公司临沂分行
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设