"```markdown
使用HTML5绘制一个正反面的硬币
在这篇文章中,我们将使用HTML5的Canvas元素来绘制一个正反面的硬币。我们将使用JavaScript来控制绘制的过程。
创建HTML结构
首先,我们需要创建一个简单的HTML结构,包含一个Canvas元素和一些基本的样式。
<!DOCTYPE html>
<html lang=\"zh\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<title>硬币绘制</title>
<style>
canvas {
border: 1px solid #000;
display: block;
margin: 20px auto;
}
</style>
</head>
<body>
<canvas id=\"coinCanvas\" width=\"200\" height=\"200\"></canvas>
<script src=\"script.js\"></script>
</body>
</html>
绘制硬币的JavaScript代码
接下来,我们在script.js文件中实现绘制硬币的逻辑。
const canvas = document.getElementById('coinCanvas');
const ctx = canvas.getContext('2d');
// 绘制硬币的正面
function drawFront() {
// 圆形外边框
ctx.beginPath();
ctx.arc(100, 100, 80, 0, Math.PI * 2, false);
ctx.fillStyle = '#FFD700'; // 金色
ctx.fill();
ctx.strokeStyle = '#B8860B'; // 深金色
ctx.lineWidth = 5;
ctx.stroke();
// 绘制硬币图案
ctx.fillStyle = '#FFF';
ctx.font = \"20px Arial\";
ctx.textAlign = \"center\";
ctx.fillText(\"正面\", 100, 100);
}
// 绘制硬币的反面
function drawBack() {
ctx.clearRect(0, 0, canvas.width, canvas.height); // 清空画布
// 圆形外边框
ctx.beginPath();
ctx.arc(100, 100, 80, 0, Math.PI * 2, false);
ctx.fillStyle = '#C0C0C0'; // 银色
ctx.fill();
ctx.strokeStyle = '#A9A9A9'; // 深银色
ctx.lineWidth = 5;
ctx.stroke();
// 绘制硬币图案
ctx.fillStyle = '#000';
ctx.font = \"20px Arial\";
ctx.textAlign = \"center\";
ctx.fillText(\"反面\", 100, 100);
}
// 初始化绘制正面
drawFront();
// 切换硬币的正反面
canvas.addEventListener('click', () => {
if (ctx.fillStyle === '#FFD700') {
drawBack();
} else {
drawFront();
}
});
代码解释
- Canvas元素:我们创建了一个200x200像素的Canvas元素,作为绘制硬币的画布。
- 绘制正面:在
drawFront函数中,使用arc方法绘制一个金色的圆形,表示硬币的正面,并在中心绘制“正面”字样。 - 绘制反面:在
drawBack函数中,首先清空画布,然后绘制一个银色的圆形,表示硬币的反面,并在中心绘制“反面”字样。 - 事件监听:通过监听Canvas的点击事件,切换正反面。
总结
通过以上步骤,我们使用HTML5的Canvas元素成功绘制了一个可以切换正反面的硬币。可以根据需要进一步美化硬币的图案和样式。