`

HTML5编程百例之一:HTML5时钟

    博客分类:
  • web
web 
阅读更多


本文主要用到的知识

  1、Canvas

  2、三角函数

  3、JavaScript

以上知识学习资源推荐

  Canvas:https://developer.mozilla.org/en/Canvas_tutorialhttp://www.w3.org/TR/2dcontext/

  三角函数:http://zh.wikipedia.org/zh/%E4%B8%89%E8%A7%92%E5%87%BD%E6%95%B0

  JavaScript:https://developer.mozilla.org/en/JavaScripthttp://www.w3school.com.cn/js/index.asp

效果

 

源代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>超酷HTML5时钟(作者:http://www.cnblogs.com/jscode/)</title>
    <style type="text/css">
        .time {
            text-align: center;
            width:400px;
            font-family: "Book Antiqua",Palatino,serif;
            font-size: 40px;
            font-weight: bold;
            text-shadow: 1px 1px 3px #333;
            position:absolute;
        }
        .time em {
            background: white;
            position: absolute;
            top: 5px;
            left: 130px;
            height: 18px;
            width: 140px;
            opacity: 0.4;
        }
    </style>
    <script type="text/javascript">
        var canvas, context;
        function DrawClock() {
            canvas = document.getElementById("canvas");
            context = canvas.getContext("2d");
            setInterval("drawbackground()", 1000);
        }
        function drawbackground() {
            var radius = Math.min(canvas.width / 2, canvas.height / 2) - 15;
            var centerx = canvas.width / 2;
            var centery = canvas.height / 2;
            context.clearRect(0, 0, canvas.width, canvas.height);
            context.save();
            context.lineWidth = 15;
            context.fillStyle = "#EFEFEF";
            context.strokeStyle = "#000";
            context.beginPath();
            context.arc(centerx, centery, radius, 0, Math.PI * 2, 0);
            context.fill();
            context.stroke();
            context.closePath();
            context.restore();
            for (var i = 0; i < 60; i++) {
                context.save();
                context.fillStyle = "#EFEFEF";
                context.strokeStyle = "#000";   
                if (i % 5 == 0) {
                    context.lineWidth = 3;
                }
                context.beginPath();
                context.moveTo(centerx, centery);
                context.lineTo(centerx + (radius-6) * Math.cos(i * 6 * Math.PI / 180), centery - (radius-5) * Math.sin(i * 6 * Math.PI / 180));
                context.fill();
                context.stroke();
                context.closePath();
                context.restore();
            }
            context.moveTo(centerx, centery);
            context.save();
            context.fillStyle = "#EFEFEF";
            context.strokeStyle = "#EFEFEF";
            context.beginPath();
            context.arc(centerx, centery, radius-15, 0, Math.PI * 2, 0);
            context.fill();
            context.stroke();
            context.closePath();
            context.restore();
        
            var r = radius - 25;
            context.font = "bold 20px 宋体";
            Drawtext("1", centerx + (Math.cos(60 * Math.PI / 180) * r), centery - (Math.sin(60 * Math.PI / 180) * r));
            Drawtext("2", centerx + (Math.cos(30 * Math.PI / 180) * r), centery - (Math.sin(30 * Math.PI / 180) * r));
            Drawtext("3", centerx + (Math.cos(0 * Math.PI / 180) * r), centery - (Math.sin(0 * Math.PI / 180) * r));
            Drawtext("4", centerx + (Math.cos(330 * Math.PI / 180) * r), centery - (Math.sin(330 * Math.PI / 180) * r));
            Drawtext("5", centerx + (Math.cos(300 * Math.PI / 180) * r), centery - (Math.sin(300 * Math.PI / 180) * r));
            Drawtext("6", centerx + (Math.cos(270 * Math.PI / 180) * r), centery - (Math.sin(270 * Math.PI / 180) * r));
            Drawtext("7", centerx + (Math.cos(240 * Math.PI / 180) * r), centery - (Math.sin(240 * Math.PI / 180) * r));
            Drawtext("8", centerx + (Math.cos(210 * Math.PI / 180) * r), centery - (Math.sin(210 * Math.PI / 180) * r));
            Drawtext("9", centerx + (Math.cos(180 * Math.PI / 180) * r), centery - (Math.sin(180 * Math.PI / 180) * r));
            Drawtext("10", centerx + (Math.cos(150 * Math.PI / 180) * r), centery - (Math.sin(150 * Math.PI / 180) * r));
            Drawtext("11", centerx + (Math.cos(120 * Math.PI / 180) * r), centery - (Math.sin(120 * Math.PI / 180) * r));
            Drawtext("12", centerx + (Math.cos(90 * Math.PI / 180) * r), centery - (Math.sin(90 * Math.PI / 180) * r));
            context.save();
            context.fillStyle="black";
            context.beginPath();
            context.arc(centerx,centery,10,0,Math.PI*2,0);
            context.fill();
            context.stroke();
            context.closePath();
            context.restore();
        
            drawpoint(centerx, centery, radius);
        
        }
        
        function drawpoint(centerx, centery, radius) {
            var date = new Date();
            var h = date.getHours();
            h = h < 13 ? h : h - 12;
            var m = date.getMinutes();
            var s = date.getSeconds();
        
            var th = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
            var tm = m < 10 ? "0" + m : m;
            var ts = s < 10 ? "0" + s : s;
            document.getElementById("currtime").innerHTML = th + ":" + tm + ":" + ts;
        
            var hr = h * 30 * Math.PI / 180 + (m / 60) * 30 * Math.PI / 180 + 90 * Math.PI / 180;
            var mr = m * 6 * Math.PI / 180 + s / 60 * 6 * Math.PI / 180 + 90 * Math.PI / 180;
            var sr = s * 6 * Math.PI / 180 + 90 * Math.PI / 180;
            context.save();
            context.lineWidth = 5;
            context.fillStyle = "darkgray";
            context.strokeStyle = "black";
            context.beginPath();
            context.moveTo(centerx + 20 * Math.cos(hr), centery + 20 * Math.sin(hr));
            context.lineTo(centerx - (radius - 120) * Math.cos(hr), centery - (radius - 120) * Math.sin(hr));
        
            context.moveTo(centerx + 20 * Math.cos(mr), centery + 20 * Math.sin(mr));
            context.lineTo(centerx - (radius - 80) * Math.cos(mr), centery - (radius - 80) * Math.sin(mr));
        
        
            context.moveTo(centerx + 20 * Math.cos(sr), centery + 20 * Math.sin(sr));
            context.lineTo(centerx - (radius - 50) * Math.cos(sr), centery - (radius - 50) * Math.sin(sr));
        
            context.closePath();
            context.fill();
            context.stroke();
            context.restore();
        }
        
        function Drawtext(text, x, y) {
            context.save();
            x -= (context.measureText(text).width / 2);
            y += 9;
            context.beginPath();
            context.translate(x, y);
            context.fillText(text, 0, 0);
            context.restore();
        }
        
        window.onload = DrawClock;
    </script>
</head>
<body>
    <h1>超酷HTML5时钟(作者:http://www.cnblogs.com/jscode/)</h1>
    <canvas id="canvas" width="400px" height="400px"></canvas>
    <div class="time"><span id="currtime">00:00:00</span><em></em></div>
</body>
</html>

方法作用解释:

DrawClock方法取得Canvas上下文

drawbackground 方法主要是画时钟的背景部分:边框、文字、刻度线

drawpoint 方法用来画时、分、秒线

Drawtext 方法是添加文字的

分享到:
评论

相关推荐

    html5数字时钟_html5电子时钟_html5时钟效果代码

    HTML5数字时钟是一种利用HTML5的Canvas API和JavaScript编程技术来实现的动态时钟效果。这个技术在网页设计和开发中广泛应用,为用户提供了一种实时、直观的时间展示方式,无需依赖任何外部插件或服务器端的数据更新...

    HTML5 Canvas绘制时钟

    这篇博文“HTML5 Canvas绘制时钟”旨在介绍如何利用Canvas API创建一个实时更新的数字或指针式时钟。我们将深入探讨Canvas的基础知识、相关API以及实现时钟的具体步骤。 1. HTML5 Canvas基础 HTML5 Canvas是一个二...

    html5炫丽时钟效果

    综上所述,"html5炫丽时钟效果"涵盖了HTML5 Canvas的使用、JavaScript时间处理、动画框架、模块化编程、事件处理以及可能的CSS和响应式设计。通过这些技术,开发者可以创建出引人注目且互动性强的网页时钟或倒计时...

    纯html5绘制的本地时钟特效.zip

    【纯HTML5绘制的本地时钟特效】是一个利用HTML5技术实现的创新视觉效果,它展示了HTML5的强大功能和灵活性。HTML5作为一种先进的标记语言,不仅增强了网页的结构化能力,还提供了丰富的媒体支持和离线存储等功能。在...

    简洁美观的Html5时钟

    【Html5时钟】是一种利用HTML5、CSS3和JavaScript技术构建的实时显示时间的网页应用。这个项目对于初学者来说是一个很好的实践案例,因为它涵盖了Web前端开发的基础知识,包括结构化标签、样式表现和动态功能。下面...

    HTML5模拟时钟

    HTML5引入了许多新的标签,如`&lt;canvas&gt;`,它是一个用于绘制2D图形的可编程区域,可以用来画出时钟的表盘和指针。在这个项目中,`&lt;canvas&gt;`元素将作为画布,通过JavaScript来控制其上的内容。 首先,我们需要在HTML...

    基于Html5-canvas炫酷的数字时钟.zip

    这个"基于Html5-canvas炫酷的数字时钟.zip"文件很可能包含了一个使用HTML5 Canvas实现的创新数字时钟示例。在这个项目中,开发者可能利用了Canvas的绘图功能来创建一个视觉上吸引人的时钟界面,它能够实时更新时间,...

    HTML5的时钟实例(初级者)

    在这个“HTML5的时钟实例”中,初级学习者可以了解到如何利用HTML5的Canvas API创建一个实时更新的时钟。 首先,让我们详细探讨HTML5的Canvas API。Canvas是一个二维绘图上下文,允许开发者通过JavaScript来绘制...

    html5 css3带翻页数字时钟动画特效

    总的来说,"html5 css3带翻页数字时钟动画特效"是一个结合了HTML5的`&lt;canvas&gt;`、CSS3的动画和过渡效果以及JavaScript编程的项目,旨在创建一个实时且具有翻页动画效果的数字时钟。通过理解和实践这样的项目,开发者...

    超级实用的html5制作15种数字时钟样式代码

    HTML5是现代网页开发的核心技术之一,它引入了许多新的元素、API和功能,极大地扩展了网页的交互性和表现力。本资源"超级实用的html5制作15种数字时钟样式代码"正是利用HTML5的强大特性,展示了如何通过编程创建各种...

    抖音超火罗马时钟h5实现

    总之,实现抖音上流行的罗马时钟H5涉及到了HTML5、CSS3和JavaScript的综合运用,通过巧妙的设计和编程,我们可以在网页上创建出一款既美观又实用的时钟应用。这一过程中,不仅可以学习到前端开发的基础知识,还能...

    HTML5显示日期星期的圆形时钟代码

    在这个案例中,"HTML5显示日期星期的圆形时钟代码"是一个使用HTML5的Canvas元素创建的交互式时钟,能够实时显示当前的时间、日期以及星期。Canvas是HTML5中的一个强大的图形绘制接口,通过JavaScript来绘制2D图形。 ...

    网页时钟:HTML+CSS+JS

    网页时钟是一个常见的交互式网页元素,它利用HTML、CSS和JavaScript这三种核心技术来实现。在Web开发中,HTML负责构建网页的基本结构,CSS用于美化页面样式,而JavaScript则为网页添加动态功能,如实时时间更新。在...

    html5 canvas制作15种数字时钟样式代码

    HTML5 Canvas 是一个强大的网页图形绘制工具,它允许开发者通过JavaScript在浏览器中直接进行2D图形的绘制。在这个项目中,“html5 canvas制作15种数字时钟样式代码”是利用Canvas API创建了十五种不同设计风格的...

    HTML5 canvas超逼真的模拟时钟特效

    在本教程中,我们将探讨如何利用HTML5 canvas实现一个超逼真的模拟时钟特效。 首先,我们需要理解canvas的基本结构。HTML5的`&lt;canvas&gt;`标签是一个矩形区域,可以通过JavaScript来绘制图形。在canvas上绘图,我们...

    带表盘和数字刻度HTML5时钟代码

    HTML5时钟是一种利用网页技术实现的实时时间显示工具,主要通过HTML5的Canvas API来绘制动态的时钟界面。这个特定的时钟代码包含一个带有表盘和数字刻度的交互式设计,并且提供了三种内置的主题供用户选择。下面我们...

    倒影时钟 javascript 倒影 时钟 源码 html IE

    而JavaScript是一种广泛用于网页开发的编程语言,它能够实现网页的交互性和动态效果。 【描述分析】 描述中提到"用javascript写的练习脚本,代码很简单,适合初学者",这暗示了这个项目是一个教学资源,可能是一个...

    HTML5 3D液晶数字时钟动画特效

    总结来说,这个“HTML5 3D液晶数字时钟动画特效”项目是一个综合运用HTML5的`&lt;canvas&gt;`、three.js以及可能的CSS技术实现的创新示例,展示了如何在网页上创建互动性强、视觉效果出色的3D时钟。对于学习Web开发,尤其...

    罗盘时钟Python HTML代码文件

    大家在刷视频的时候看到的动态罗盘时钟,今天给出源码,供喜欢的...html5 时钟显示模板,直接显示当前的时间,还能按照秒自动加时,动画效果也随着时间的变化而变化。动画指向也为当前的时间,罗盘显示,贼帅罗盘时钟

Global site tag (gtag.js) - Google Analytics