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 相关文章推荐
JavaScript中的事件处理
Jan 16 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 Javascript
解决jQuery使用JSONP时产生的错误
Dec 02 Javascript
javascript HTML5文件上传FileReader API
Mar 27 Javascript
jQuery 3.0十大新特性
Jul 06 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
JavaScript错误处理和堆栈追踪详解
Apr 18 Javascript
Angular4表单验证代码详解
Sep 03 Javascript
js input输入百分号保存数据库失败的解决方法
May 26 Javascript
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
May 09 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 格式化数字的时候注意数字的范围
2010/04/13 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
php for 循环使用的简单实例
2016/06/02 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
javascript History对象原理解析
2020/02/17 Javascript
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
2014年数学教师工作总结
2014/12/03 职场文书
经理岗位职责
2015/02/02 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
go开发alertmanger实现钉钉报警
2021/07/16 Golang
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL