【JS+H5+CSS实现烟花特效】

以下是一个简单的烟花特效实现的代码示例:




<!DOCTYPE html>
<html>
<head>
<style>
  body {
    margin: 0;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #111;
  }
  .confetti {
    --size-min: 1px;
    --size-max: 6px;
    --speed-min: 0.5s;
    --speed-max: 2s;
    --density: 2000;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    animation: confetti-animation linear infinite;
  }
  @keyframes confetti-animation {
    0% {
      transform: translate3d(0, 0, 0);
    }
    100% {
      transform: translate3d(
        calc(
          (var(--size-max) - var(--size-min)) * 
            (random() - 0.5) * 2 + var(--size-min)
        ),
        calc(
          (var(--size-max) - var(--size-min)) * 
            (random() - 0.5) * 2 + var(--size-min) + 
          var(--size-max) * 2
        ),
        0
      );
      opacity: 0;
    }
  }
</style>
</head>
<body>
<div class="confetti" style="--size-min: 2px; --size-max: 4px; --speed-min: 0.2s; --speed-max: 1s; --density: 5000;"></div>
<script>
  const confetti = document.querySelector('.confetti');
  const random = (min, max) => Math.random() * (max - min) + min;
  const range = (min, max) => new Array(max - min + 1).fill(min).map((n, i) => n + i);
  const createConfetti = () => {
    const size = `${random(2, 6)}px`; // min and max size
    const speed = `${random(0.5, 2)}s`; // min and max animation duration
    const style = `
      width: ${size};
      height: ${size};
      background: rgba(255, 255, 255, ${random(0.2, 0.8)});
      animation-duration: ${speed};
      animation-delay: ${random(0, 10)}s;
    `;
    return `<div style="${style}"></div>`;
  };
  const density = confetti.style['--density'];
  const confettiCount = document.querySelectorAll('.confetti div').length;
  if (confettiCount < density) {
    const confettiFragments = range(density - confettiCount).map(createConfetti).join('');
    confetti.insertAdjacentHTML('beforeend', confettiFragments);
  }
</script>
</body>
</html>

这段代码会在页面上

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日