使用CSS3实现下红包雨的特效

348 阅读2分钟

"```markdown

使用CSS3实现下红包雨的特效

在这个项目中,我们将使用HTML、CSS3和JavaScript实现一个红包雨的特效。通过简单的动画和随机化,我们可以创建出一种令人愉悦的视觉效果。

HTML结构

首先,创建一个简单的HTML结构,包含一个用于显示红包的容器。

<!DOCTYPE html>
<html lang=\"zh\">
<head>
    <meta charset=\"UTF-8\">
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
    <title>红包雨特效</title>
    <link rel=\"stylesheet\" href=\"styles.css\">
</head>
<body>
    <div class=\"container\" id=\"container\"></div>
    <script src=\"script.js\"></script>
</body>
</html>

CSS样式

接下来,使用CSS来定义红包的样式以及动画效果。

/* styles.css */
body {
    margin: 0;
    overflow: hidden; /* 防止出现滚动条 */
    background-color: #f0f0f0; /* 背景颜色 */
}

.container {
    position: relative;
    width: 100%;
    height: 100vh; /* 100%视口高度 */
}

.red-envelope {
    position: absolute;
    width: 50px; /* 红包宽度 */
    height: 70px; /* 红包高度 */
    background-color: red; /* 红包颜色 */
    color: gold; /* 金色字体 */
    border-radius: 5px; /* 圆角 */
    text-align: center;
    line-height: 70px; /* 垂直居中 */
    font-size: 20px; /* 字体大小 */
    opacity: 0.9; /* 半透明效果 */
    animation: fall linear forwards; /* 使用动画 */
}

@keyframes fall {
    0% {
        transform: translateY(-100px); /* 从上方开始 */
    }
    100% {
        transform: translateY(100vh); /* 到达底部 */
    }
}

JavaScript逻辑

然后,使用JavaScript生成红包并使其下落。

// script.js
const container = document.getElementById('container');

function createRedEnvelope() {
    const envelope = document.createElement('div');
    envelope.className = 'red-envelope';
    envelope.innerHTML = '红包'; // 红包内容

    // 设置红包的随机水平位置
    envelope.style.left = Math.random() * 100 + 'vw';
    
    // 设置动画持续时间
    const duration = Math.random() * 2 + 3; // 随机3到5秒
    envelope.style.animationDuration = duration + 's';

    // 追加红包到容器中
    container.appendChild(envelope);

    // 动画结束后移除红包
    envelope.addEventListener('animationend', () => {
        envelope.remove();
    });
}

// 每隔300毫秒生成一个红包
setInterval(createRedEnvelope, 300);

效果展示

通过以上代码,我们实现了一个简单的红包雨特效。红包从屏幕顶部随机位置下落,形成一个美丽的视觉效果。可以根据需要调整红包的样式和下落速度,以达到最佳效果。

在浏览器中打开HTML文件,即可看到红包雨效果。通过不断生成红包并应用CSS3动画,我们可以创建出令人愉悦的动态效果,提升用户体验。