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

实现红包雨的特效主要涉及到HTML、CSS以及JavaScript。以下是一个简单的红包雨特效的实现步骤:

1. HTML结构

首先,我们需要创建一些红包的HTML元素。

<div id="redPacketRain">
    <!-- 红包元素将通过JavaScript动态添加 -->
</div>

2. CSS样式

接着,我们为红包添加样式。

#redPacketRain {
    position: relative;
    width: 100%;
    height: 100vh;
    overflow: hidden;
}

.red-packet {
    position: absolute;
    width: 60px;
    height: 80px;
    background-color: red;
    border-radius: 10px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
    animation: fall linear infinite;
    opacity: 0;
}

@keyframes fall {
    0% { transform: translateY(-100vh); opacity: 1; }
    100% { transform: translateY(100vh); opacity: 0; }
}

3. JavaScript动态添加红包并设置动画

最后,我们使用JavaScript来动态添加红包,并设置它们的初始位置。

const redPacketRain = document.getElementById('redPacketRain');
const numPackets = 50; // 红包数量,可以根据需要调整

function createRedPacket() {
    const redPacket = document.createElement('div');
    redPacket.classList.add('red-packet');
    redPacket.style.left = `${Math.random() * (window.innerWidth - 60)}px`; // 随机设置红包的初始水平位置
    redPacket.style.animationDuration = `${Math.random() * 4 + 2}s`; // 随机设置动画持续时间,使红包下落速度有所不同
    redPacketRain.appendChild(redPacket);
    setTimeout(() => {
        redPacket.remove(); // 红包落出屏幕后移除元素,优化性能
    }, 5000); // 设置一个稍大于最大动画持续时间的延迟,确保红包已被移除
}

// 创建指定数量的红包
for (let i = 0; i < numPackets; i++) {
    setTimeout(() => {
        createRedPacket();
    }, Math.random() * 2000); // 随机延迟,使红包不是同时开始下落
}

这段代码会创建一个红包雨的特效,红包会从屏幕顶部随机位置下落,并且每个红包的下落速度也有所不同。你可以根据需要调整红包的数量、大小、颜色等样式属性,以及动画的持续时间和延迟等参数。

posted @   王铁柱6  阅读(106)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示