JS实现页面炫酷的时钟特效示例


Posted in Javascript onAugust 14, 2022

一.前言

今天看到某网站的时间特别的丑陋,所以就诞生了写一个看时间的炫酷的时钟前端页面。 特点就是炫酷,特效好,个人以心情愉快的感觉。 对于时间的变化,我打算使用翻页的特效来完成,色系的话采用黑色以主题,给人一种神秘的感觉。

JS实现页面炫酷的时钟特效示例

而且要获取到本地的时间的数据来实时更新它的变化。

二.想法设计/实现过程

秉持着尽可能的美观炫酷,与用户的交互性好的原则,我初步的想法是,采用黑色系来增加可观性,写三个黑色框框分别代表小时,分钟,秒,然后获取到本地计算机或者服务器的时间数据,进行动态变化,而且对于数字的变化,采用翻页形式的改变对应的数字,从而增加可观性。 这就是稳定初步想法:

JS实现页面炫酷的时钟特效示例

三.基本样式

首先需要定义一下最外面的框子(clock)和外面最大的背景的颜色(大小,形式,透明度等等): 基本的css如下:

.clock {
      display: grid;
      padding: 0 12px;
      grid-template-columns: 1fr 1fr 1fr;
      grid-column-gap: 12px;
      min-width: 200px;
      height: var(--clockheight);
      border-radius: var(--radius);
      background-image: linear-gradient(
        rgb(14, 14, 15) 0%,
        rgb(26, 25, 28) 20%,
        rgb(44, 44, 52) 50%,
        rgb(20, 20, 27) 100%
      );
      box-shadow: inset 0 -3px 6px 3px rgba(0, 0, 0, 0.2),
        inset 0 4px 8px 3px rgba(0, 0, 0, 0.4),
        0 2px 3px 1px rgba(255, 255, 255, 0.3), 0 -2px 4px 4px rgba(56, 56, 61, 0.5);
    }

最外面的盒子模型:

<div class="clock">
 </div>

目前效果如下:

JS实现页面炫酷的时钟特效示例

四.时间函数控制器

因为是炫酷的时钟特效,外面首先要考虑的是对于时间的计算以及获取的问题:思考一个问题,我们的目前时间可以很容易的从系统时间获取,但是,翻页与变化是需要我们额外的去控制的。所以需要我们额外的去写的。

var date = new Date();
  var seconds = date.getSeconds().toString();
  if (seconds.length == 1) {
    seconds = "0" + seconds;
  }
  var minutes = date.getMinutes().toString();
  if (minutes.length == 1) {
    minutes = "0" + minutes;
  }
  var hour = date.getHours();
  if (hour > 12) {
    hour = hour - 12;
  }
  if (hour == 0) {
    hour = 12;
  }
  hour = hour.toString();
  if (hour.length == 1) {
    hour = "0" + hour;
  }
  if ($(myhour[0]).text() !== hour) {
    flipNumber($(myhour[0]).closest(".flipper"), hour);
  }
  if ($(myminute[0]).text() !== minutes) {
    flipNumber($(myminute[0]).closest(".flipper"), minutes);
  }
  if ($(mysecond[0]).text() !== seconds) {
    flipNumber($(mysecond[0]).closest(".flipper"), seconds);
  }

为了适应变化,异步变化的特性,我们需要额外写一个延迟函数,来控制,不让他们同时出现,增加可观性:

setTimeout(function () {
    setTime();
  }, 500);

当然,不要忘记第一步的引入工作,我们目前使用俩个前端框架,分别是jquery和bootstrap。这样可以加快我们开发的速度。

<script type="text/javascript" src="https://repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="https://repo.bfw.wiki/bfwrepo/js/bootstrap.4.3.1.min.js"></script>

五,时,分,秒占位

我们之前已经写了背景的样式与最外面的框子的样式,现在我们的时,分,秒都还没有写,所以,我们把他分为三部分:

JS实现页面炫酷的时钟特效示例

一个类似这样的样式效果,html代码样式盒子如下:

<div class="flipper">
<div class="gear"></div>
<div class="gear"></div>
<div class="top">
    <div class="text">00</div>
</div>
<div class="bottom">
    <div class="text">00</div>
</div>
</div>

这样重复3次,分别对应着时,分,秒,给他们占位。

六.时间动态填充

现在,我们的位置已经写好样式了,我们需要使用JavaScript来动态的填充更换我们的当时的时间数字:

function flipNumber(el, newnumber) {
  var thistop = el.find(".top").clone();
  var thisbottom = el.find(".bottom").clone();
  thistop.addClass("new");
  thisbottom.addClass("new");
  thisbottom.find(".text").text(newnumber);
  el.find(".top").after(thistop);
  el.find(".top.new").append(thisbottom);
  el.addClass("flipping");
  el.find(".top:not(.new)").find(".text").text(newnumber);
  setTimeout(function () {
    el.find(".bottom:not(.new)").find(".text").text(newnumber);
  }, 500);
}

最后的效果图如下:

JS实现页面炫酷的时钟特效示例

以上就是JS实现页面炫酷的时钟特效示例的详细内容,更多关于JS页面时钟的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
JavaScript 笔记二 Array和Date对象方法
May 22 Javascript
关于递归运算的顺序测试代码
Nov 30 Javascript
jQuery Tools tab(幻灯片)
Jul 14 Javascript
js实现简单登录功能的实例代码
Nov 09 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
Oct 09 Javascript
Jquery解析json字符串及json数组的方法
May 29 Javascript
AngularJs Forms详解及简单示例
Sep 01 Javascript
如何获取元素的最终background-color
Feb 06 Javascript
详解Vue.js入门环境搭建
Mar 17 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
vue路由跳转传递参数的方式总结
May 10 Javascript
小程序实现录音功能
Sep 22 Javascript
Rust中的Struct使用示例详解
Aug 14 #Javascript
使用Cargo工具高效创建Rust项目
Aug 14 #Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
Aug 14 #Javascript
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 #Vue.js
Vue深入理解插槽slot的使用
Aug 05 #Vue.js
React如何使用axios请求数据并把数据渲染到组件
Aug 05 #Javascript
使用JS前端技术实现静态图片局部流动效果
Aug 05 #Javascript
You might like
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
关于svn冲突的解决方法
2013/06/21 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
python编写猜数字小游戏
2019/10/06 Python
python如何处理程序无法打开
2020/06/16 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
花坛标语大全
2014/06/30 职场文书
建筑管理专业求职信
2014/07/28 职场文书
上班离岗检讨书
2014/09/10 职场文书
民用住房租房协议书
2014/10/29 职场文书