原生JS实现的简单小钟表功能示例


Posted in Javascript onAugust 30, 2018

本文实例讲述了原生JS实现的简单小钟表功能。分享给大家供大家参考,具体如下:

先来看看运行效果:

原生JS实现的简单小钟表功能示例

完整代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>3water.com 钟表</title>
    <style type="text/css">
      body {
       background-color:#00A2D4;
      }
      .clock {
        width: 200px;
        height: 200px;
        background: -webkit-radial-gradient(#3b3b3b, #000);
        background: radial-gradient(#2E3F50, #0E1B29);
        box-shadow: inset 0px 0px 30px #131313, 0px 2px 18px rgba(0,0,0,0.5);
        border: 6px solid #172839;
        border-radius: 106px;
        margin: auto;
        position: absolute;
        top: 0; bottom: 0; left: 0; right: 0;
      }
      .hour-hand {
        width: 4px;
        height: 55px;
        background: #fff;
        box-shadow: 0px 0px 7px #000;
        position: absolute;
        top: 45px;
        left: 98px;
      }
      .minute-hand {
        width: 4px;
        height: 80px;
        background: #fff;
        box-shadow: 0px 0px 4px #000;
        position: absolute;
        top: 20px;
        left: 98px;
      }
      .second-hand {
        width: 2px;
        height: 80px;
        background: #bbb;
        box-shadow: 0px 0px 7px #000;
        position: absolute;
        top: 20px;
        left: 99px;
      }
      .pin {
        width: 10px;
        height: 10px;
        background: #222;
        border-radius: 10px;
        margin: auto;
        position: absolute;
        top: 0; bottom: 0; left: 0; right: 0;
      }
      .hour-hand,
      .minute-hand,
      .second-hand {
        -webkit-transform-origin: 50% 100%;
        -moz-transform-origin: 50% 100%;
        -o-transform-origin: 50% 100%;
        -ms-transform-origin: 50% 100%;
        transform-origin: 50% 100%;
      }
      .circle{
        width:20px;
        height:20px;
        line-height:20px;
        text-align:center;
        color:#fff;
        position: absolute;
      }
    </style>
  </head>
  <body>
    <div class="clock">
      <div class="minute-hand"></div>
      <div class="hour-hand"></div>
      <div class="second-hand"></div>
      <div class="pin"></div>
      <div class="circle">6</div>
      <div class="circle">5</div>
      <div class="circle">4</div>
      <div class="circle">3</div>
      <div class="circle">2</div>
      <div class="circle">1</div>
      <div class="circle">12</div>
      <div class="circle">11</div>
      <div class="circle">10</div>
      <div class="circle">9</div>
      <div class="circle">8</div>
      <div class="circle">7</div>
    </div>
    <div class="time"></div>
    <script type="text/javascript">
      window.onload=function(){
        setInterval(function(){
          var dt = new Date();
          var sec_deg = dt.getSeconds() * (360/60);
          var min_deg = dt.getMinutes() * (360/60);
          var hr_deg = dt.getHours() * (360/12) + dt.getMinutes() * (360/60/12);
          document.querySelector(".clock .second-hand").style.cssText='-webkit-transform:rotate(' + sec_deg + 'deg)','-moz-transform:rotate(' + sec_deg + 'deg)', '-o-transform:rotate(' + sec_deg + 'deg)', '-ms-transform:rotate(' + sec_deg + 'deg)', 'transform:rotate(' + sec_deg + 'deg)';
          document.querySelector('.clock .minute-hand').style.cssText='-webkit-transform:rotate(' + min_deg + 'deg)', '-moz-transform:rotate(' + min_deg + 'deg)', '-o-transform:rotate(' + min_deg + 'deg)', '-ms-transform:rotate(' + min_deg + 'deg)', 'transform:rotate(' + min_deg + 'deg)';
          document.querySelector('.clock .hour-hand').style.cssText='-webkit-transform:rotate(' + hr_deg + 'deg)', '-moz-transform:rotate(' + hr_deg + 'deg)', '-o-transform:rotate(' + hr_deg + 'deg)', '-ms-transform:rotate(' + hr_deg + 'deg)', 'transform:rotate(' + hr_deg + 'deg)';
         }, 1000);
        var dx=90,
          dy=90,
          s=87,//半径
          x=Math.sin(0),
          y=Math.cos(0),
          dig=2*Math.PI/12;
        var circle=document.querySelectorAll(".circle");
        for(var i=0;i<12;i++){
          var x=Math.sin(i*dig);
          var y=Math.cos(i*dig);
          var topValue=Number(dy+y*s),
            leftValue=Number(dx+x*s);
          circle[i].style.top=topValue+"px";
          circle[i].style.left=leftValue+"px";
        }
      }
    </script>
  </body>
</html>

感兴趣的朋友可使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试一下运行效果。

Javascript 相关文章推荐
动态表格Table类的实现
Aug 26 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
JavaScript数据推送Comet技术详解
Apr 07 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
jQuery 判断是否包含在数组中Array[]的方法
Aug 03 Javascript
JavaScript ES6中CLASS的使用详解
Nov 22 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 Javascript
Bootstrap整体框架之JavaScript插件架构
Dec 15 Javascript
JS去掉字符串中所有的逗号
Oct 18 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
js中apply和call的理解与使用方法
Nov 27 Javascript
使用Node搭建reactSSR服务端渲染架构
Aug 30 #Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 #Javascript
JS实现的input选择图片本地预览功能示例
Aug 29 #Javascript
简述vue状态管理模式之vuex
Aug 29 #Javascript
jQuery实现的简单手风琴效果示例
Aug 29 #jQuery
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 #Javascript
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 #jQuery
You might like
桌面中心(四)数据显示
2006/10/09 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
js导出txt示例代码
2014/01/14 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
js动态引入的四种方法
2018/05/05 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
Python简单日志处理类分享
2015/02/14 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python变量命名的7条建议
2019/07/04 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
保护环境倡议书500字
2014/05/19 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
导游词之河北野三坡
2019/12/11 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android