雪花飘落是一种常见的网页特效,用于模拟下雪的场景。以下是一个简单的JavaScript和CSS实现雪花飘落效果的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Snowfall Effect</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<script src="script.js"></script>
</body>
</html>
body {
margin: 0;
overflow: hidden;
background: #000;
}
.snowflake {
position: absolute;
width: 10px;
height: 10px;
background: white;
border-radius: 50%;
}
const snowflakesCount = 100; // 雪花数量
const snowflakes = [];
function createSnowflake() {
const snowflake = document.createElement('div');
snowflake.classList.add('snowflake');
document.body.appendChild(snowflake);
// 随机位置
snowflake.style.left = `${Math.random() * 100}vw`;
snowflake.style.top = `${Math.random() * -100}vh`;
// 随机大小和速度
const size = Math.random() * 5 + 5;
const speed = Math.random() * 2 + 1;
snowflake.style.width = `${size}px`;
snowflake.style.height = `${size}px`;
return { element: snowflake, speed };
}
for (let i = 0; i < snowflakesCount; i++) {
snowflakes.push(createSnowflake());
}
function updateSnowflakes() {
for (const snowflake of snowflakes) {
const { element, speed } = snowflake;
let top = parseFloat(element.style.top);
top += speed;
element.style.top = `${top}px`;
// 如果雪花超出屏幕底部,重置其位置
if (top > window.innerHeight) {
element.style.top = `${Math.random() * -100}vh`;
element.style.left = `${Math.random() * 100}vw`;
}
}
requestAnimationFrame(updateSnowflakes);
}
updateSnowflakes();
pointer-events: none;
属性来防止雪花干扰用户交互。通过上述代码和解释,你应该能够实现一个简单的雪花飘落效果,并理解其背后的基本原理和应用场景。
领取专属 10元无门槛券
手把手带您无忧上云