原生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 相关文章推荐
javascript中window.event事件用法详解
Dec 11 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
javascript中callee与caller的区别分析
Apr 20 Javascript
JavaScript中的prototype原型学习指南
May 09 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 Javascript
微信小程序实时聊天WebSocket
Jul 05 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
May 05 Javascript
微信小程序的mpvue框架快速上手指南
May 15 Javascript
微信小程序使用echarts获取数据并生成折线图
Oct 16 Javascript
JavaScript中的this妙用实例分析
May 09 Javascript
js 获取扫码枪输入数据的方法
Jun 10 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
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
js判断两个日期是否相等的方法
2013/09/10 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
机电一体化专业推荐信
2013/12/03 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
师德师风学习材料
2014/12/19 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
Mysql binlog日志文件过大的解决
2021/10/05 MySQL