Web前端开发网

fly63.com

首页 资源 工具 文章 教程 栏目
  • 在线搜索
  • 文章标签
  • 广告合作
  • 赞助一下
  • 关于我们
资源推荐
阿里云优惠券
卓越的云计算技术和服务提供商
腾讯云优惠券
云服务器,云数据库,CDN,域名注册等多种云计算服务
扣子Coze
职场AI,就用扣子
豆包AI
字节跳动旗下 AI 智能助手
即梦AI
一站式智能创作平台,即刻造梦
AiPPT
全智能AI一键生成 PPT
堆友AI
零门槛,多风格AI绘画免费生成,电商海报设计神器
蜂小推
不扣量的项目推广平台
SpeedAI
一键去重、降AIGC率、数据可视化、论文写作

资源分类

AI智能 酷站推荐 招聘/兼职 框架/库 模块/管理 移动端UI框架 Web-UI框架 Js插件 Jquery插件 CSS相关 IDE环境 在线工具 图形动效 游戏框架 node相关 调试/测试 在线学习 社区/论坛 博客/团队 前端素材 图标/图库 建站资源 设计/灵感 IT资讯
网站收录 / 问题反馈

canvas-confetti

分享
复制链接
新浪微博
QQ 好友

扫一扫分享

网站地址:https://www.kirilv.com/canvas-confetti
GitHub:https://github.com/catdad/canvas-confetti
网站描述:浏览器中的高性能五彩纸屑动画
访问官网
GitHub

canvas-confetti是一个轻量级JavaScript库,用于创建网页炫彩纸屑动画效果。该库提供多种自定义选项,包括粒子数量、角度和速度等,方便开发者为网页增添欢庆氛围。支持npm安装和CDN引入,同时考虑了用户的减少动效需求。库还支持自定义形状和文字纸屑,增强动画的个性化。canvas-confetti为网页添加趣味性和互动性,是一个实用的开发工具。


为什么选择 Canvas Confetti?

  • 轻量级:库本身非常小巧,不会对页面性能造成影响。
  • 高效:使用 html5 Canvas 实现,具有高效的渲染性能,即使在复杂的页面中也能流畅运行。
  • 灵活可定制:支持多种配置选项,允许开发者根据需求自定义纸屑的颜色、形状、大小和数量。
  • 简单易用:api 设计非常简洁,只需要几行代码就能实现炫酷的庆祝效果。


安装

1、npm 安装

1npm i canvas-confetti

导入依赖

1import confetti from 'canvas-confetti'

2、浏览器端引入

<!-- script 直接引入 -->
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/dist/confetti.browser.min.js"></script>
<!-- ESM 引入 --> <script type="module">import confetti from 'https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/+esm'</script>


示例

1、随机方向+随机范围+随机数量

<button id="start">启动动画效果</button>
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/dist/confetti.browser.min.js"></script><script>  // 生成随机数  function randomInRange(min, max) {
    return Math.random() * (max - min) + min;
  }
  document.querySelector('#start').addEventListener('click', function() {
    confetti({
      angle: randomInRange(55, 125),
      spread: randomInRange(50, 70),
      particleCount: randomInRange(50, 100),
      origin: { y: 0.6 }
    });
  })
</script>

2、在页面上放一组烟花庆祝下

<button id="start">启动动画效果</button>
<script type="module">  import confetti from 'https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/+esm'  // 生成随机数  function randomInRange(min, max) {
    return Math.random() * (max - min) + min;
  }
  document.querySelector('#start').addEventListener('click', function() {
    // 烟花效果持续 5 秒    const duration = 5 * 1000;
    const animationEnd = Date.now() + duration;
    // 默认配置参数    const defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: 0 };

    const interval = setInterval(function() {
      const timeLeft = animationEnd - Date.now();

      if (timeLeft <= 0) {
        return clearInterval(interval);
      }

      const particleCount = 50 * (timeLeft / duration);
      // 同时启动两个烟花位置      confetti({ ...defaults, particleCount, origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 } });
      confetti({ ...defaults, particleCount, origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 } });
    }, 250);
  })
</script>

3、控制动画图案

<button id="start">启动动画效果</button>
<script type="module">  import confetti from 'https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/+esm'
  const defaults = {
    spread: 360,
    ticks: 50,
    gravity: 0,
    decay: 0.94,
    startVelocity: 30,
    colors: ['FFE400', 'FFBD00', 'E89400', 'FFCA6C', 'FDFFB8']
  };

  function shoot() {
    // 这一组显示星星图案效果    confetti({
      ...defaults,
      particleCount: 40,
      scalar: 1.2,
      shapes: ['star']
    });

    // 这一组显示圆形图案效果    confetti({
      ...defaults,
      particleCount: 10,
      scalar: 0.75,
      shapes: ['circle']
    });
  }

  document.querySelector('#start').addEventListener('click', function() {
    // 控制动画延迟显示    setTimeout(shoot, 0);
    setTimeout(shoot, 100);
    setTimeout(shoot, 200);
  })
</script>

4、冬天到了,网页上也可以下一场雪

<body>
  <button id="start">启动动画效果</button>
  <script type="module">    import confetti from 'https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.4/+esm'
    // 生成随机数    function randomInRange(min, max) {
      return Math.random() * (max - min) + min;
    }

    document.querySelector('#start').addEventListener('click', function() {
      // 效果持续 5 秒      var duration = 5 * 1000;
      var animationEnd = Date.now() + duration;
      var skew = 1;

      (function frame() {
        var timeLeft = animationEnd - Date.now();
        var ticks = Math.max(200, 500 * (timeLeft / duration));
        skew = Math.max(0.8, skew - 0.001);

        confetti({
          particleCount: 1,
          startVelocity: 0,
          ticks: ticks,
          origin: {
            x: Math.random(),
            // since particles fall down, skew start toward the top            y: (Math.random() * skew) - 0.2          },
          colors: ['#ffffff'],
          shapes: ['circle'],
          gravity: randomInRange(0.4, 0.6),
          scalar: randomInRange(0.4, 1),
          drift: randomInRange(-0.4, 0.4)
        });

        if (timeLeft > 0) {
          requestAnimationFrame(frame);
        }
      }());
    })
  </script></body>


仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!

链接: https://fly63.com/nav/4784

更多»
热门资源
ECharts
一个使用 JavaScript 实现的开源可视化库
官网
GitHub
SVG.js
包括各种形状、线条、文本、路径等元素
官网
GitHub
d3.js
基于HTML 和 SVG 的 JavaScript 可视化库
官网
GitHub
incubator-echarts
百度团队开发的一款商业级数据图表
官网
GitHub
g2
一套基于可视化编码的图形语法
官网
GitHub
Chartist.js
JavaScript响应式图表库
官网
GitHub
MetricsGraphics.js
一个基于 D3 的简洁的数据图表优化
官网
GitHub
plotly.js
基于d3.js 和stack.gl开源的 JavaScript 图表库
官网
GitHub
js-sequence-diagrams
一款基于 Javascript 的Web绘制时序图的工具
官网
GitHub
C3.js
基于D3.js开发的JavaScript库
官网
GitHub
crossfilter
一个数据计算模型,能够很好地结合DC.JS进行数据解析绘图
官网
GitHub
Processing.js
擅长创建2D和3D图象,可视化数据套件,音频,视频等
官网
GitHub
类似于canvas-confetti的资源
Paper.js
一个基于HTML5 Canvas的矢量图形的脚本,可以实现多种绚丽的效果。
官网
GitHub
hamburgers
超酷图标变形动画特效
官网
GitHub
nvd3.js
一个用 d3.js 写的可重用的图表库
官网
GitHub
React Simple Maps
一个基于React创建SVG地图的组件库
官网
GitHub
MetricsGraphics.js
一个基于 D3 的简洁的数据图表优化
官网
GitHub
deck.GL
基于WebGL的大数据量可视化框架
官网
GitHub
pts.js
用于可视化和创意编码的typescript/javascript库
官网
GitHub
Walkway.js
将SVG矢量图中的一些基本元素以线性动画的方式展示出来
官网
GitHub
目录

手机扫一扫预览

》
分享组件加载中...
首页 技术导航 在线工具 技术文章 教程资源 前端标签 AI工具集 前端库/框架 实用工具箱 广告合作 关于我们

Copyright © 2018 Web前端开发网提供免费在线工具、编程学习资源(教程/框架/库),内容以学习参考为主,助您解决各类实际问题,快速提升专业能力。