返回
Canvas基础:DIY时间定制器
前端
2023-10-12 14:50:12
<p align=center></p>
<p align=center></p>
<p align=center></p>
欢迎来到 Canvas 的时间魔术世界!这次,我们将共同探索如何运用 Canvas 的非凡魔力,将一块普通的表盘幻化成一件艺术品。
**背景定制,点亮时间舞台**
首先,告别单调的背景,为我们的时钟舞台换上别出心裁的风景。无论是繁星点点的夜空、还是活力四射的都市街景,亦或是心爱的宠物倩影,一切尽在 Canvas 的掌控之中。
**指针舞动,奏响时间乐章**
指针,时钟的灵魂所在。在 Canvas 的妙笔下,时针、分针和秒针将被赋予灵动之姿。纤细或粗犷、简约或繁复,由你定义时间的流淌姿态。
**刻度绽放,点缀时间轨迹**
时钟的刻度,仿佛指引着时间的航标。圆形、方形还是别致的异形,全凭你的一己心裁。让 Canvas 挥洒创意,在时间轨迹上点缀出一个个迷人的音符。
**融汇贯通,奏响时间协奏曲**
背景、指针、刻度,三者合奏,将为你谱写一曲别致动听的时间协奏曲。每一秒的流逝,都将化作 Canvas 上的一段独特舞姿,诉说着属于你自己的时间印记。
**动手试炼,点亮 Canvas 魔力**
准备好踏上 Canvas 的时间之旅了吗?准备好用指尖挥洒创意,让时间在 Canvas 的舞台上尽情绽放了吗?那就动手吧!
**第一步:地基初定,构筑 Canvas 舞台**
使用`HTML5`创建一个` canvas` 元素,它将承载我们所有的时间魔法。
**HTML 片段**
```html
<body>
<p align=center><#code_html>
<html>
<body>
<!-- canvas标签画布区域 -->
<section>
<h2>本地时间:<span id="clock-display">00:00:00<span>
<section>
<section>
<h3>用 Canvas 作图:<h3>
<div id="clock-face">
<!-- canvas绘制区 -->
<!-- canvas 元素将绘制我们的时钟 -->
<!-- canvas标签画布区域 -->
<section>
<script src="time-wizard.js">
<script>
<body>
<html>
</p><#code_html></p>
时间舞台初现身,拭目以待 Canvas 妙笔
javaScript 片段
<p align=center><#code_js>
const canvas = document.getElementById('clock-face');
const context = canvas.getContext('2d');
</p><#code_js></p>
绘制 Canvas 舞台
<p align=center><#code_js>
// canvas 组件尺寸
const clockSize = 400;
const clockCenter = clockSize / 2;
</p><#code_js></p>
<p align=center><#code_js>
// 创建白色填充的圆形表盘
context.save();
context.strokeStyle = "white";
context.lineWidth = 5;
context.fill();
context.moveTo(clockCenter, clockCenter);
context.lineTo(clockCenter, clockCenter + 10);
context.closePath();
context.fill();
context.restore();
</p><#code_js></p>
指针飞舞,奏响时间乐章
<p align=center><#code_js>
const drawLine = (hour) => {
context.save();
context.strokeStyle = (hour % 3) === 0 ? "white" : "lightblue";
context.lineWidth = (hour % 3) === 0 ? 4 : 1;
const degree = (hour * 30) * (Math.PI / 180);
context.moveTo(clockCenter, clockCenter);
context.lineTo(clockCenter + 80, clockCenter + 100 * Math.sin( degree ) );
context.closePath();
context.fill();
context.restore();
}
</p><#code_js></p>
刻度律动,点缀时间轨迹
<p align=center><#code_js>
const drawNumber = (hour) => {
context.save();
context.font = "bold 20px Arial";
context.textBaseline = "top";
context.textAlign = "center";
const degree = (hour * 30) * (Math.PI / 180);
const x = clockCenter + 110 * Math.cos( degree );
const y = clockCenter + 110 * Math.sin( degree );
context.fillText(hour === 0 ? 12 : hour, x, y);
context.restore();
}
</p><#code_js></p>
时间流淌,诉说 Canvas 魔力
<p align=center><#code_js>
// 每秒触发,绘制时间
function updateTime() {
context.clearRect(0, 0, clockSize, clockSize);
const time = new Date();
const hours = time.getHours() % 12;
const minutes = time.getMinutes();
const seconds = time.getSeconds();
document.getElementById("clock-display").textContent = formatTime( hours, minutes, seconds );
drawLine( hours, minutes, seconds );
drawNumber( hours, minutes, seconds );
}
setInterval(updateTime, 1000);
</p><#code_js></p>
用 Canvas 挥洒时间创意,让每一秒都与众独特!