原生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 相关文章推荐
jquery tab标签页的制作
May 10 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 Javascript
jquery中.add()的使用分析
Apr 26 Javascript
javascript实现颜色渐变的方法
Oct 30 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 Javascript
原生JavaScript实现Ajax的方法
Apr 07 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
Jan 15 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
Dec 25 Javascript
JS 图片压缩原理与实现方法详解
Apr 29 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中防止SQL注入的最佳解决方法
2013/04/25 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
浅谈php扩展imagick
2014/06/02 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
详解Vite的新体验
2021/02/22 Javascript
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Python连接Impala实现步骤解析
2020/08/04 Python
利用python 读写csv文件
2020/09/10 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
二年级作文之动物作文
2019/11/13 职场文书
python入门之算法学习
2021/04/22 Python
Python 阶乘详解
2021/10/05 Python