Web前端开发网

fly63.com

首页 资源 工具 文章 教程 栏目
  • 在线搜索
  • 文章标签
  • 广告合作
  • 赞助一下
  • 关于我们
资源推荐
AiPPT
全智能AI一键生成 PPT
蜂小推
不扣量的项目推广平台
腾讯云优惠券
云服务器,云数据库,CDN,域名注册等多种云计算服务
美图设计室
AI智能一键生成海报,免费平面设计
即梦AI
一站式智能创作平台,即刻造梦
阿里云优惠券
卓越的云计算技术和服务提供商
宝塔服务器面板
简单好用的服务器运维面板
SpeedAI
一键去重、降AIGC率、数据可视化、论文写作
3387游戏盒子
提供热门折扣手游,助你轻松畅玩各种类型的游戏
奇绘馆AI视频
新一代AI视频创作平台

资源分类

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的资源
nivo.js
React数据可视化库
官网
GitHub
Flotr2
包含简单的,柱状图,折线图,饼图,散点图等图表库
官网
GitHub
ONNX.js
在浏览器和Node.js上运行ONNX模型
官网
GitHub
Envision.js
用来简化,快速创建交互式的 HTML5 可视化图表
官网
GitHub
ant-motion
快速在 React 框架中使用动画
官网
GitHub
granim.js
轻量级的用来创建流体和交互式渐变动画的js库
官网
GitHub
JSTS
符合OGC规范的简单要素空间位置判定函数JavaScript库
官网
GitHub
gl-matrix
JS矩阵计算开发库
官网
GitHub
目录

手机扫一扫预览

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

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