原生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 相关文章推荐
点图片上一页下一页翻页效果
Jul 09 Javascript
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
Aug 02 Javascript
jquery 利用show和hidden实现级联菜单示例代码
Aug 09 Javascript
jquery实现div阴影效果示例代码
Sep 16 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 Javascript
JQuery validate插件Remote用法大全
May 15 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
Jun 15 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
第十三节 对象串行化 [13]
2006/10/09 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
JavaScript实现拼音排序的方法
2012/11/20 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
Python中的装饰器用法详解
2015/01/14 Python
Python实现配置文件备份的方法
2015/07/30 Python
使用tensorflow实现AlexNet
2017/11/20 Python
Python requests上传文件实现步骤
2020/09/15 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
体育教育专业毕业生自荐信
2013/11/15 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
关于青春的演讲稿
2014/05/05 职场文书
党员公开承诺书2015
2015/01/21 职场文书
工作态度怎么写
2015/06/25 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
JavaScript实现栈结构详细过程
2021/12/06 Javascript