Ưıƽcanvasʱ
Чͼ
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Document</title>
- </head>
- <body>
- <canvas id="canvas" style="margin: 20px auto 0;display: block"></canvas>
- </body>
- <script>
- var canvas = document.getElementById("canvas");
- canvas.width = 800;
- canvas.height = 800;
- var img = new Image();
- var cxt = canvas.getContext("2d");
- window.onload = function() {
- clock()
- setInterval(function(argument) {
- clock()
- }, 1000)
- }
- function clock() {
- //ȡǰʱ
- var d = new Date();
- var h, m, s;
- h = d.getHours();
- h = h > 12 ? h - 12 : h;
- m = d.getMinutes();
- s = d.getSeconds();
- //Ʊ
- img.src = "https://wuchujiang.github.io/pages/image/wood.jpg";
- cxt.clearRect(0, 0, canvas.width, canvas.height);
- img.onload = function() {
- cxt.drawImage(img, 0, 0);
- //ɫ
- var gra2 = cxt.createLinearGradient(200, 0, 600, 0);
- gra2.addColorStop(0, "#3fccde");
- gra2.addColorStop(0.5, "#3fccde");
- gra2.addColorStop(0.5, "#a2d658");
- gra2.addColorStop(1, "#a2d658");
- cxt.beginPath();
- cxt.arc(400, 400, 180, 0, 2 * Math.PI);
- cxt.closePath();
- cxt.fillStyle = gra2;
- cxt.fill();
- //Ʊ
- cxt.save();
- var gra = cxt.createLinearGradient(0, 0, 0, 600);
- gra.addColorStop(0, "#f7f9f7")
- gra.addColorStop(1, "#e0ecde");
- cxt.beginPath();
- cxt.arc(400, 400, 200, 0, 2 * Math.PI, true);
- cxt.arc(400, 400, 180, 0, 2 * Math.PI, false);
- cxt.fillStyle = gra;
- cxt.shadowOffsetX = 0;
- cxt.shadowOffsetY = 10;
- cxt.shadowBlur = 30;
- cxt.shadowColor = "rgba(0,0,0,0.3)";
- cxt.fill()
- cxt.restore();
- //ƿ̶
- for (var i = 1; i <= 60; i++) {
- cxt.save();
- cxt.translate(400, 400);
- cxt.beginPath();
- cxt.rotate((i * (360 / 60)) / 180 * Math.PI);
- var y = i % 5 ? -150 : -147
- var sty = i % 5 ? "rgba(255,255,255,0.6)" : "#fff";
- cxt.moveTo(0, y);
- cxt.lineTo(0, -160);
- cxt.closePath();
- cxt.strokeStyle = sty;
- cxt.lineWidth = 2;
- cxt.stroke();
- cxt.restore();
- }
- //ʱ̶
- for (var i = 1; i <= 12; i++) {
- cxt.save();
- cxt.translate(400, 400);
- cxt.font = "normal 20px Georgia";
- cxt.textAlign = "center";
- cxt.textBaseline = "middle";
- cxt.fillStyle = "#fff";
- cxt.fillText(i, Math.cos((-90 + i * 360 / 12) / 180 * Math.PI) * 130, Math.sin((-90 + i * 360 / 12) / 180 * Math.PI) * 130)
- cxt.restore();
- }
- //Ȧ
- var gra4 = cxt.createRadialGradient(400, 400, 8, 400, 400, 6);
- gra4.addColorStop(0, "#000");
- gra4.addColorStop(1, "#111");
- cxt.beginPath();
- cxt.arc(400, 400, 10, 0, 2 * Math.PI);
- cxt.fillStyle = gra4;
- cxt.fill();
- //ʱ롣
- cxt.save();
- cxt.translate(400, 400);
- cxt.rotate((h + m / 60) * 30 / 180 * Math.PI)
- cxt.beginPath();
- cxt.moveTo(0, 25);
- cxt.lineTo(0, -100);
- cxt.lineWidth = 4;
- cxt.strokeStyle = "#fff";
- cxt.shadowOffsetX = 6;
- cxt.shadowOffsetY = 6;
- cxt.shadowBlur = "7";
- cxt.shadowColor = "rgba(0,0,0,0.2)";
- cxt.stroke();
- cxt.restore();
- //Ʒ롣
- cxt.save();
- cxt.translate(400, 400);
- cxt.rotate((m + s / 60) * 6 / 180 * Math.PI);
- cxt.beginPath();
- cxt.moveTo(0, 25);
- cxt.lineTo(0, -110);
- cxt.lineWidth = 3;
- cxt.strokeStyle = "#fff";
- cxt.shadowOffsetX = 6;
- cxt.shadowOffsetY = 6;
- cxt.shadowBlur = "7";
- cxt.shadowColor = "rgba(0,0,0,0.2)";
- cxt.stroke();
- cxt.restore();
- //롣
- cxt.save();
- cxt.translate(400, 400);
- cxt.rotate(s * 6 / 180 * Math.PI);
- cxt.beginPath();
- cxt.strokeStyle = "#fff";
- cxt.moveTo(0, 20);
- cxt.lineTo(0, -135);
- cxt.closePath();
- cxt.shadowOffsetX = 6;
- cxt.shadowOffsetY = 6;
- cxt.shadowBlur = "7";
- cxt.shadowColor = "rgba(0,0,0,0.2)";
- cxt.lineWidth = 2;
- cxt.stroke();
- cxt.beginPath();
- cxt.arc(0, -130, 6, 0, 2 * Math.PI)
- cxt.closePath();
- cxt.fillStyle = "#fff";
- cxt.fill();
- cxt.restore();
- //ԲȦ
- cxt.save();
- var gra3 = cxt.createRadialGradient(400, 400, 3, 400, 400, 6);
- gra3.addColorStop(0, "#fff");
- gra3.addColorStop(1, "#f0f0f0");
- cxt.beginPath();
- cxt.arc(400, 400, 6, 0, 2 * Math.PI);
- cxt.fillStyle = gra3;
- cxt.fill();
- cxt.restore();
- //
- cxt.save();
- cxt.font = "normal 16px Georgia";
- cxt.fillStyle = "#fff";
- cxt.textAlign = "center";
- cxt.textBaseline = "middle";
- cxt.shadowOffsetX = 0;
- cxt.shadowOffsetY = 2;
- cxt.shadowBlur = "1";
- cxt.shadowColor = "rgba(0,0,0,0.1)";
- cxt.fillText("CANVAS", 400, 490);
- cxt.restore();
- }
- }
- </script>
- </html>
ƴ
|