canvas版时钟

<!DOCTYPE html>

<html>


<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

canvas {

box-shadow: 0 0 10px paleturquoise;

}

</style>

</head>


<body>

<canvas id="canvas" width="500" height="500"></canvas>

<script type="text/javascript">

var canvas = document.getElementById("canvas");

var ctx = canvas.getContext("2d");


var center = {

x: 250,

y: 250

}

// 时针

var hourLine = {

width: "5",

length: 140,

color: "deeppink"

}

// 分针

var minLine = {

width: "3",

length: 160,

color: "yellow"

}

// 秒针

var secLine = {

width: "2",

length: 180,

color: "blue"

}


function drawLine(obj, deg) {

// var date = new Date();

// var currentDeg = date.getSeconds() * (Math.PI * 2 / 60);

ctx.strokeStyle = obj.color;

ctx.lineWidth = obj.width;

ctx.beginPath();

ctx.moveTo(center.x, center.y);

ctx.lineTo(center.x + obj.length * Math.sin(deg), center.y - obj.length * Math.cos(deg));

ctx.stroke();

}

// drawLine();

setInterval(function() {

// 1. 清屏

ctx.clearRect(0, 0, canvas.width, canvas.height);

// 2.背景

drawBac();

// 3. 画针

var date = new Date();

var hourDeg = date.getHours() * (Math.PI * 2 / 12);

var minDeg = date.getMinutes() * (Math.PI * 2 / 60);

var secDeg = date.getSeconds() * (Math.PI * 2 / 60);

drawLine(hourLine, hourDeg);

drawLine(minLine, minDeg);

drawLine(secLine, secDeg);

}, 1000);


function drawBac() {

ctx.strokeStyle = "deeppink";

// 小圆

ctx.beginPath();

ctx.arc(center.x, center.y, 200, 0, Math.PI * 2, false);

ctx.stroke();

// 大圆

ctx.beginPath();

ctx.arc(250, 250, 210, 0, Math.PI * 2, false);

ctx.stroke();

var deg = 0;

var deg1 = 0;

// 大刻度

for(var i = 0; i < 12; i++) {

deg += Math.PI * 2 / 12;

ctx.beginPath();

ctx.moveTo(250 + 180 * Math.cos(deg), 250 - 180 * Math.sin(deg));

ctx.lineTo(250 + 200 * Math.cos(deg), 250 - 200 * Math.sin(deg));

ctx.stroke();

// 小刻度

for (var j = 0; j < 4; j++) {

deg1 += Math.PI * 2 / 12 / 4;

ctx.beginPath();

ctx.moveTo(250 + 190 * Math.cos(deg1), 250 - 190 * Math.sin(deg1));

ctx.lineTo(250 + 200 * Math.cos(deg1), 250 - 200 * Math.sin(deg1));

ctx.stroke();

}

}

ctx.font = "12px DFWaWaSC-W5";

ctx.fillStyle = "mediumspringgreen";

deg = 0;

// 数字

for(var i = 1; i <= 12; i++) {

deg += Math.PI * 2 / 12;

ctx.font = "30px DFWaWaSC-W5";

ctx.fillStyle = "mediumspringgreen";

ctx.fillText(i, 240 + 160 * Math.sin(deg), 260 - 160 * Math.cos(deg));

}

}

</script>

</body>


</html>

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值