以下是一个简单的HTML和JavaScript代码示例,用于生成一个可以下雪的动态圣诞树:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Snowy Christmas Tree</title>
<style>
body, html {
margin: 0;
padding: 0;
height: 100%;
}
canvas {
display: block;
}
</style>
</head>
<body>
<canvas id="snowCanvas"></canvas>
<script>
// 定义雪花的构造函数
function Snowflake(x, y) {
this.x = x;
this.y = y;
this.size = random(1, 10);
this.speed = random(1, 5);
}
Snowflake.prototype.draw = function() {
ctx.fillStyle = 'white';
ctx.beginPath();
ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
ctx.fill();
};
Snowflake.prototype.update = function() {
this.y += this.speed;
if (this.y > height) this.y = 0;
this.draw();
};
// 辅助函数
function random(min, max) {
return Math.random() * (max - min) + min;
}
function init() {
var canvas = document.getElementById('snowCanvas');
var ctx = canvas.getContext('2d');
var snowflakes = [];
var width = canvas.width = window.innerWidth;
var height = canvas.height = window.innerHeight;
// 创建一批雪花
for (var i = 0; i < 100; i++) {
snowflakes.push(new Snowflake(random(0, width), random(0, height)));
}
// 绘制雪花
function render() {
ctx.clearRect(0, 0, width, height);
snowflakes.forEach(function(snowflake) {
snowflake.update();
});
requestAnimationFrame(render);
}
render();
}
init();
</script>
</body>
</html>
这段代码首先定义了一个Snowflake
构造函数来创建雪花对象,每个雪花对象有位置、大小和速度属性。draw
方法用于绘制雪花,update
方法用于移动雪花并检查是否超出屏幕,如果超出则将其放置在屏幕顶端。init
函数初始化画布,创建雪花集合,并启动动画循环。这个简单的例子演示了如何使用JavaScript和HTML5的canvas
元素来创建一个动态的下雪效果。