原生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 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
jQuery.event兼容各浏览器的event详细解析
Dec 18 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
AngularJS动态加载模块和依赖的方法分析
Nov 08 Javascript
详解js的六大数据类型
Dec 27 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
JavaScript实现微信红包算法及问题解决方法
Apr 26 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 21 Javascript
浅析JavaScript 函数柯里化
Sep 08 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
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
php实现微信支付之现金红包
2018/05/30 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
js Event对象的5种坐标
2011/09/12 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python实现爬取逐浪小说的方法
2015/07/07 Python
Python列表切片用法示例
2017/04/19 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
python中最小二乘法详细讲解
2021/02/19 Python
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
小学生暑假感言
2014/02/06 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
《四季》教学反思
2014/04/08 职场文书
听课评语大全
2014/04/30 职场文书
党员教师一句话承诺
2014/05/30 职场文书
商场促销活动总结
2014/07/10 职场文书
护士优质服务演讲稿
2014/08/26 职场文书