For our new lesson I have prepared nice pure HTML5 clocks. This is pretty easy script, but it is very easy and impressive (as usual). Of course – anything necessary will be at canvas object.
Step 1. HTML
This is markup of our clocks. Here it is.
index.html
04 | <meta charset="utf-8" /> |
05 | <title>HTML5 Clocks | Script Tutorials</title> |
06 | <link href="css/main.css" rel="stylesheet" type="text/css" /> |
08 | <script src="js/script.js"></script> |
16 | <canvas id="canvas" width="500" height="500"></canvas> |
Step 2. CSS
Here are all required stylesheets
css/main.css
Step 3. JS
js/script.js
08 | ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); |
15 | var date = new Date(); |
16 | var hours = date.getHours(); |
17 | var minutes = date.getMinutes(); |
18 | var seconds = date.getSeconds(); |
19 | hours = hours > 12 ? hours - 12 : hours; |
20 | var hour = hours + minutes / 60; |
21 | var minute = minutes + seconds / 60; |
27 | ctx.drawImage(clockImage, 0, 0, 500, 500); |
29 | ctx.translate(canvas.width / 2, canvas.height / 2); |
33 | ctx.font = '36px Arial'; |
34 | ctx.fillStyle = '#000'; |
35 | ctx.textAlign = 'center'; |
36 | ctx.textBaseline = 'middle'; |
37 | for (var n = 1; n <= 12; n++) { |
38 | var theta = (n - 3) * (Math.PI * 2) / 12; |
39 | var x = clockRadius * 0.7 * Math.cos(theta); |
40 | var y = clockRadius * 0.7 * Math.sin(theta); |
41 | ctx.fillText(n, x, y); |
46 | var theta = (hour - 3) * 2 * Math.PI / 12; |
51 | ctx.lineTo(clockRadius * 0.5, 1); |
52 | ctx.lineTo(clockRadius * 0.5, -1); |
58 | var theta = (minute - 15) * 2 * Math.PI / 60; |
63 | ctx.lineTo(clockRadius * 0.8, 1); |
64 | ctx.lineTo(clockRadius * 0.8, -1); |
70 | var theta = (seconds - 15) * 2 * Math.PI / 60; |
75 | ctx.lineTo(clockRadius * 0.9, 1); |
76 | ctx.lineTo(clockRadius * 0.9, -1); |
77 | ctx.fillStyle = '#0f0'; |
86 | canvas = document.getElementById('canvas'); |
87 | ctx = canvas.getContext('2d'); |
92 | clockImage = new Image(); |
93 | clockImage.src = 'images/cface.png'; |
95 | setInterval(drawScene, 1000); |
I have defined main timer to redraw scene. Each step (tick) script defines current time, and draw clock arrows (hour arrow, minute arrow and second arrow).
No comments:
Post a Comment