原生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 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
Sep 15 Javascript
jquery限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
jquery五角星评分插件示例分享
Feb 21 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
Mar 05 Javascript
bootstrapValidator表单验证插件学习
Dec 30 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
Mar 08 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
Jan 24 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
php中序列化与反序列化详解
2017/02/13 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
清空上传控件input file的值
2010/07/03 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
文明餐桌行动实施方案
2014/02/19 职场文书
法律专业自荐信
2014/06/03 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
工作表扬信范文
2015/01/17 职场文书
门球健将观后感
2015/06/16 职场文书
庆元旦主持词
2015/07/06 职场文书