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

  • 美版抖音怎么不能看(下了美版抖音打开什么都没有)

    美版抖音怎么不能看(下了美版抖音打开什么都没有)

  • 微信视频有回音是什么原因(微信视频有回音如何消除)

    微信视频有回音是什么原因(微信视频有回音如何消除)

  • 小麦直播能提现吗(小麦麦在哪直播)

    小麦直播能提现吗(小麦麦在哪直播)

  • 照片应该怎么发朋友圈(照片应该怎么发抖音)

    照片应该怎么发朋友圈(照片应该怎么发抖音)

  • 步步高家教机s3和s5有什么区别(步步高家教机s3参数配置)

    步步高家教机s3和s5有什么区别(步步高家教机s3参数配置)

  • qq单删对方还有你吗(qq单删后对方还有联系人的吗)

    qq单删对方还有你吗(qq单删后对方还有联系人的吗)

  • 苹果手机上的视频怎么改名字(苹果手机上的视频如何投屏到电视)

    苹果手机上的视频怎么改名字(苹果手机上的视频如何投屏到电视)

  • 微信如何关闭限时推广(微信如何关闭限额设置)

    微信如何关闭限时推广(微信如何关闭限额设置)

  • qq扩列频繁什么时候能恢复(qq扩列操作频繁怎么办)

    qq扩列频繁什么时候能恢复(qq扩列操作频繁怎么办)

  • 华为自创的系统叫什么(华为自创的系统有哪些)

    华为自创的系统叫什么(华为自创的系统有哪些)

  • 快手申请退款多久能到账(快手申请退款多长时间能退回)

    快手申请退款多久能到账(快手申请退款多长时间能退回)

  • 行距24磅怎么设置(行距24磅是什么意思)

    行距24磅怎么设置(行距24磅是什么意思)

  • 工作站可以装普通内存吗(工作站可以用普通显卡吗)

    工作站可以装普通内存吗(工作站可以用普通显卡吗)

  • b站怎么充值b币(b站b币怎么充值比较优惠)

    b站怎么充值b币(b站b币怎么充值比较优惠)

  • 苹果储存空间满了怎么清理(苹果储存空间满了怎么办)

    苹果储存空间满了怎么清理(苹果储存空间满了怎么办)

  • mate30怎么插卡(华为mate30怎样插卡)

    mate30怎么插卡(华为mate30怎样插卡)

  • 小爱音箱连接不上手机(小爱音箱连接不上是怎么回事)

    小爱音箱连接不上手机(小爱音箱连接不上是怎么回事)

  • vivox27通话设置在哪里(vivo手机如何设置通话)

    vivox27通话设置在哪里(vivo手机如何设置通话)

  • 苹果xr定位不准确怎么调(苹果xr为什么定位不准确)

    苹果xr定位不准确怎么调(苹果xr为什么定位不准确)

  • v1809t是什么手机型号(v1801a0型号是什么手机)

    v1809t是什么手机型号(v1801a0型号是什么手机)

  • 360安全浏览器如何添加兼容性站点(360安全浏览器如何设置极速模式)

    360安全浏览器如何添加兼容性站点(360安全浏览器如何设置极速模式)

  • mate20防水吗(华为mate20防水嘛)

    mate20防水吗(华为mate20防水嘛)

  • qq邮箱怎么发压缩包(qq邮箱怎么发文件给别的邮箱)

    qq邮箱怎么发压缩包(qq邮箱怎么发文件给别的邮箱)

  • 英雄联盟怎么改名字?更名卡如何使用?(英雄联盟怎么改左键移动)

    英雄联盟怎么改名字?更名卡如何使用?(英雄联盟怎么改左键移动)

  • 考研408复习思路,学习方法(考研408怎么样)

    考研408复习思路,学习方法(考研408怎么样)

  • 房地产增值税预缴规定
  • 个人车辆无偿给公司使用
  • 单位收到已交个税的劳务发票还需要申报个税吗
  • 食堂临聘人员的管理、考核
  • 围挡制作开票的税收分类
  • 已经计提折旧的固定资产购入后 加快折扣年限
  • 办理企业所得税退税
  • 扫微信送礼品是诈骗吗
  • 盈余公积的用途是什么
  • 公司交的拍卖费计入哪个会计科目?
  • 物业企业门禁卡如何记账?
  • 公司承租厂房装修协议
  • 领导报销发票挂哪个科目
  • 仓储部门折旧计入什么科目
  • 自营建造固定资产的账务处理
  • 计提工资需要工资表吗
  • 计提附加税的会计分录
  • 哪些票据可以抵扣个人所得税
  • 新公司领取营业执照后的流程
  • 房地产净利润率计算公式
  • 文化事业费征收
  • 增值税减免税申报明细表免税代码和名称
  • 向分公司拨款如何填现金流量表
  • 民办非企业单位属于什么类型
  • 跨期做账如何处理当事人
  • 软件固定资产还是无形资产
  • 企业所得税法如何确认应税收入
  • 办理股权转让麻烦吗
  • 去年收入少做了怎么调账
  • win10任务栏向上的箭头不见了
  • 公司流水账是会计做吗
  • 公司帐户能直接转账吗
  • 分公司特征表述正确的是
  • 微信公众号开发php源码
  • mac如何在桌面显示我的电脑
  • 出口免税和退税交附加税
  • 增值税专用发票丢了怎么补救
  • 深入理解php中的数字
  • 增长gdp是什么意思
  • 现在前端的现状
  • vue的number
  • 让我看看他们
  • metareplace -e
  • 装饰工程公司施工一般包括哪些内容?
  • 安装充电桩电费怎么收
  • 出口退税过期免税申报流程
  • 发票清单怎么导出
  • 股东分红放到哪个会计科目
  • 查补收入是否享受免税政策
  • 折扣和佣金合法的两个条件是什么?
  • 现金流量表的填列方法
  • python3多态
  • 公司借给股东的钱金额较大股东可以在年底现金归还吗
  • 金税盘问题
  • 撤销红字发票申请表
  • 长期借款属于什么会计分录
  • 航空电子客票行程单是发票吗
  • 政府补助收入的会计处理
  • 调研费属于什么会计科目
  • 什么是建筑服务的甲供工程
  • 会计学营业利润
  • 事业单位零余额账户使用流程
  • 现金退回没原始凭证咋办
  • 填制记账凭证有哪些
  • 年初建账考虑要点有哪些
  • ubuntu下载net-tools
  • 微软报错是什么意思
  • 电脑window8系统怎么样
  • win10如何打开hlp文件
  • linux常见服务
  • 一个简单的灵魂福楼拜
  • jquery 列表控件
  • 电子税务局领取纸质发票的步骤
  • 北京市国家税务局电话
  • 自然人电子税务局怎么设置申报密码
  • 2011年退伍军人证
  • 印花税应税凭证数量是什么意思
  • 太平税务局电话
  • 先进材料包括哪些行业
  • 千兆交换机涨价
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设