HTML5实现可缩放时钟代码


Posted in HTML / CSS onAugust 28, 2017

废话不多说了,直接给大家贴代码了,具体代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>canvas_time</title>
    <style type="text/css">
    div {
        text-align: center;
        margin-top: 250px;
    }
    #clock {
        border: 1px solid #cccccc;
    }
    </style>
</head>
<body>
    <div>
        <canvas id="clock" height="600px" width="600px"></canvas>
    </div>
    <script type="text/JavaScript" >
var dom = document.getElementById('clock');
var ctx = dom.getContext('2d');
var width = ctx.canvas.width;
var height = ctx.canvas.height;
var r = width / 2;
var rem = width/200;
function drawBackground() {
    ctx.save(); //存储当前环境变量;
    ctx.translate(r, r); //重置坐标到r,r
    ctx.beginPath(); // 起始一条路径
    ctx.lineWidth = 10*rem; //设置线宽10;
    ctx.arc(0, 0, r - ctx.lineWidth /2, 0, 2 * Math.PI, false);
    ctx.stroke();
    var hourNumbers = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2]; //定义数组
    ctx.font = 18*rem+"px Arial";
    ctx.textAlign = "center";
    ctx.textBaseline = "middle";
       hourNumbers.forEach(function(number, i) {
        var rad = 2 * Math.PI / 12 * i;
        var x = Math.cos(rad) * (r - 30*rem);
        var y = Math.sin(rad) * (r - 30*rem);
        ctx.fillText(number, x, y);
    });
    for (var i = 0; i < 60; i++) {
        var rad = 2 * Math.PI / 60 * i;
        var x = Math.cos(rad) * (r - 18*rem);
        var y = Math.sin(rad) * (r - 18*rem);
        ctx.beginPath();
        if (i % 5 === 0) {
            ctx.arc(x, y, 2*rem, 0, 2 * Math.PI, false);
            ctx.fillStyle = "#000";
        } else {
            ctx.arc(x, y, 2*rem, 0, 2 * Math.PI, false);
            ctx.fillStyle = "#ccc";
        }
        ctx.fill();
    }
}
    function drawHour(hour, minute) {
        ctx.save();
        ctx.beginPath();
        var rad = 2 * Math.PI / 12 * hour;
        var mrad = 2 * Math.PI / 12 / 60 * minute;
        ctx.rotate(rad + mrad);
        ctx.lineWidth = 6*rem;
        ctx.lineCap = "round";
        ctx.moveTo(0, 10*rem);
        ctx.lineTo(0, -r / 2);
        ctx.stroke();
        ctx.restore();
    }
    function drawMinute(minute) {
        ctx.save();
        ctx.beginPath();
        var rad = 2 * Math.PI / 60 * minute;
        ctx.rotate(rad);
        ctx.lineWidth = 3*rem;
        ctx.lineCap = "round";
        ctx.moveTo(0, 10*rem);
        ctx.lineTo(0, -r + 30*rem);
        ctx.stroke();
        ctx.restore();
    }
    function drawSecond(second) {
        ctx.save();
        ctx.beginPath();
        ctx.fillStyle = 'red';
        var rad = 2 * Math.PI / 60 * second;
        ctx.rotate(rad);
        ctx.moveTo(-2*rem, 20*rem);
        ctx.lineTo(2*rem, 20*rem);
        ctx.lineTo(1, -r + 16*rem);
        ctx.lineTo(-1, -r + 16*rem);
        ctx.fill();
        ctx.restore();
    }
    function drawDot() {
        ctx.beginPath();
        ctx.fillStyle = '#fff';
        ctx.arc(0, 0, 3*rem, 0, 2 * Math.PI, false);
        ctx.fill();
    }
    function draw01() {
        ctx.clearRect(0, 0, width, height);
        var now = new Date();
        var hour = now.getHours();
        var minute = now.getMinutes();
        var second = now.getSeconds();
        drawBackground();
        drawHour(hour, minute);
        drawMinute(minute);
        drawSecond(second);
        drawDot();
        ctx.restore();
    }
    draw01();
    setInterval(draw01, 1000);
</script>
</body>
</html>

总结

以上所述是小编给大家介绍的HTML5实现可缩放时钟代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

HTML / CSS 相关文章推荐
详解css3 mask遮罩实现一些特效
Oct 24 HTML / CSS
CSS3教程(10):CSS3 HSL声明设置颜色
Apr 02 HTML / CSS
分享CSS3中必须要知道的10个顶级命令
Apr 26 HTML / CSS
CSS3 绘制BMW logo实的现代码
Apr 25 HTML / CSS
css3实现背景动态渐变效果
Dec 10 HTML / CSS
CSS3 旋转立方体问题详解
Jan 09 HTML / CSS
纯html5+css3下拉导航菜单实现代码
Mar 18 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
Apr 24 HTML / CSS
处理textarea中的换行和空格
Dec 12 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
Jan 27 HTML / CSS
html解决浏览器记住密码输入框的问题
May 07 HTML / CSS
HTML 里 img 元素的 src 和 srcset 属性的区别详解
May 21 HTML / CSS
HTML5操作WebSQL数据库的实例代码
Aug 26 #HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 #HTML / CSS
HTML5中的拖放实现详解
Aug 23 #HTML / CSS
html5使用Drag事件编辑器拖拽上传图片的示例代码
Aug 22 #HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
Aug 18 #HTML / CSS
mui几种页面跳转方式对比总结概括
Aug 18 #HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
Aug 18 #HTML / CSS
You might like
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
php目录拷贝实现方法
2015/07/10 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
Python3+Appium安装使用教程
2019/07/05 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
关于Java String的一道面试题
2013/09/29 面试题
应用化学专业职业生涯规划书
2013/12/31 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
教师自我鉴定范文
2014/03/20 职场文书
加强作风建设心得体会
2014/10/22 职场文书
爱心捐款活动总结
2015/05/09 职场文书
大学生支教感言
2015/08/01 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
Golang的继承模拟实例
2021/06/30 Golang