jquery+html5制作超酷的圆盘时钟表


Posted in Javascript onApril 14, 2015

自己封装的一个用HTML5+jQuery写的时钟表

代码:

<!DOCTYPE html PUBLIC "-//W3C//h2D XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/h2D/xhtml1-transitional.h2d">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>超酷数码钟表</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs
/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
//引用的是在线jquery地址,如果不行请自行下载切换
(function($){
  $.fn.drawClock = function(options){
    var mainId = $(this);
     
    //设置默认参数
    var defaultOptions = {
      'width': '300px',
      'height': '300px',
      'margin': '200px auto',
      'border': '1px solid #888',
      'border-radius': '50%',
      'box-shadow': '2px 2px 4px #111'
    };
    var options = $.extend(defaultOptions, options);
     
    mainId.css({
      'width': options.width, 
      'height': options.height, 
      'margin': options.margin,
      'border': options.border,
      'border-radius': options['border-radius'],
      'box-shadow': options['box-shadow'], 
      'position': 'relative'
    }).css({
      'background': '-webkit-gradient(radial, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', 0, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', ' + mainId.width()/2 + ', from(#ffe), to(#eee))', 
      'background': '-moz-radial-gradient(circle closest-side, #ffe 0%, #eee 100%)'
    });
     
    //钟表盘中心圆
    $("<div id='circle'></div>").appendTo(mainId).css({
      'width': '20px',
      'height': '20px',
      'border-radius': '50%',
      'box-shadow': '0 0 5px rgba(0,0,0,0.8)',
      'position': 'absolute',
      'z-index': 999,
      'background': '-webkit-gradient(radial, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', 0, ' + mainId.width()/2 + ' ' + mainId.height()/2 + ', ' + mainId.width()/2 + ', from(#ffe), to(#eee))',
      'background': '-moz-radial-gradient(circle, #eee 30%, #ffe 100%)'
    }).css({
      'left': mainId.width()/2 - $('#circle').width()/2,
      'top': mainId.height()/2 - $('#circle').height()/2
    });
     
    var dateTime = new Date();
    var oHours = dateTime.getHours();
    var oMinutes = dateTime.getMinutes();
    var oSeconds = dateTime.getSeconds();
     
    //初始化时分秒
    var hPointer = drawPointer(mainId.width()/2, mainId.height()/2, mainId.width()/2*(3/6), 5, "#333", -90+oHours*30+oMinutes*6/12);
    var mPointer = drawPointer(mainId.width()/2, mainId.height()/2, mainId.width()/2*(4/6), 4, "#666", -90+oMinutes*6);
    var sPointer = drawPointer(mainId.width()/2, mainId.height()/2, mainId.width()/2*(5/6), 3, "#f00", -90+oSeconds*6);
     
    //运动时分秒
    var timer = setInterval(function(){
      dateTime = new Date();
      oHours = dateTime.getHours();
      oMinutes = dateTime.getMinutes();
      oSeconds = dateTime.getSeconds();    
      hPointer.css({'transform': 'rotate(' + (-90+oHours*30+oMinutes*6/12) + 'deg)'});
      mPointer.css({'transform': 'rotate(' + (-90+oMinutes*6) + 'deg)'});
      sPointer.css({'transform': 'rotate(' + (-90+oSeconds*6) + 'deg)'});
    }, 1000);
     
     
    //绘制钟表刻度
    for(var i=0; i<60; i++){
      var width = 3, height = 6, oBcolor = '#111';
      if(i%5 == 0){
        width = 5;
        height = 10;
      }
      if(i%15 == 0){
        oBcolor = 'red';
      }
      $("<div class='clockMark'></div>").appendTo(mainId).css({
        'width': width,
        'height': height,
        'position': 'absolute',
        'top': 0,
        'left': mainId.width()/2,
        'background': oBcolor,
        'transform': 'rotate(' + i*6 + 'deg)',
        "transform-origin": "0 " + mainId.width()/2+'px'
      });
    }
     
    //绘制钟表指针
    function drawPointer (startx, starty, width, height, bcolor, angle) {
      var oPointer = $("<div></div>");
      oPointer.appendTo(mainId).css({
        'width': width,
        'height': height,
        'position': 'absolute',
        'top': starty,
        'left': startx,
        'background': bcolor,
        'transform': 'rotate(' + angle + 'deg)',
        'transform-origin': '0 0'
      });
      return oPointer;
    }
     
    return this;
  }
})(jQuery);
</script>
<script type="text/javascript">
$(function(){
  $('#clock').drawClock();
});
</script>
</head>
 
<body>
  <div id="clock"></div>
</body>
</html>

演示图:

jquery+html5制作超酷的圆盘时钟表 

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
基于jquery的无限级联下拉框js插件
Oct 29 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 Javascript
vue.js指令v-model使用方法
Mar 20 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
Aug 17 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
vxe-table vue table 表格组件功能
May 26 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 #Javascript
使用javascript实现判断当前浏览器
Apr 14 #Javascript
jQuery获得指定元素坐标的方法
Apr 14 #Javascript
JavaScript时间转换处理函数
Apr 14 #Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 #Javascript
js正则表达式匹配数字字母下划线等
Apr 14 #Javascript
JavaScript使用Replace进行字符串替换的方法
Apr 14 #Javascript
You might like
php mssql 时间格式问题
2009/01/13 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
帝国cms目录结构分享
2015/07/06 PHP
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
vue实现短信验证码输入框
2020/04/17 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
Python OpenCV获取视频的方法
2018/02/28 Python
Django和Flask框架优缺点对比
2019/10/24 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
python re的findall和finditer的区别详解
2020/11/15 Python
python在协程中增加任务实例操作
2021/02/28 Python
教师现实表现材料
2014/02/14 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
个人课题方案
2014/05/08 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
导游欢迎词范文
2015/01/23 职场文书
检讨书范文
2019/04/16 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
四十九个javascript小知识实用技巧
2021/11/20 Javascript