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 相关文章推荐
div移动 输入框不能输入的问题
Nov 19 Javascript
javascript实现数字+字母验证码的简单实例
Feb 10 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
Bootstrap实现响应式导航栏效果
Dec 28 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 Javascript
js生成随机数方法和实例
Jan 17 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
JavaScript时间日期操作实例小结【5个示例】
Dec 22 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
微信小程序实现底部弹出模态框
Nov 18 Javascript
JavaScript文档对象模型DOM
Nov 20 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中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
小程序点击图片实现自动播放视频
2020/05/29 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
跟老齐学Python之永远强大的函数
2014/09/14 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
Python帮你识破双11的套路
2019/11/11 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
医药大学生求职简历的自我评价
2013/10/17 职场文书
任命书模板
2014/06/04 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
教师年度考核个人总结
2015/02/12 职场文书
离婚纠纷代理词
2015/05/23 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
讨论nginx location 顺序问题
2022/05/30 Servers