广告
返回顶部
首页 > 资讯 > 精选 >使用canvas怎么实现一个粒子动画背景
  • 791
分享到

使用canvas怎么实现一个粒子动画背景

2023-06-09 21:06:34 791人浏览 独家记忆
摘要

使用canvas怎么实现一个粒子动画背景?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建canvas首先需要在需要展示粒子背景的父元素中创建一个canvas标签, 指定wid

使用canvas怎么实现一个粒子动画背景?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创建canvas

首先需要在需要展示粒子背景的父元素中创建一个canvas标签, 指定widthheight, 在我们生成随机点坐标的时候需要用widthheight来做参照。widthheight等于父元素的宽和高。

// 假如父元素是bodyconst ele = document.body;const canvas = document.createElement('canvas');canvas.width = ele.clientWidth;canvas.height = ele.clientHeight;// 将canvas标签插入ele.appendChild(canvas);

随机生成一定数量的点坐标信息

widthheight做参照随机生成一定数量的点坐标信息,包含x, y, rateX(点在X轴的移动速率), rateY(点在Y轴移动的速率), rateXrateY决定了点的运动轨迹。

const points = [];// 随机生成点的坐标,需指定radius的最大值function getPoint(radius) {  const x = Math.ceil(Math.random() * this.width), // 粒子的x坐标    y = Math.ceil(Math.random() * this.height), // 粒子的y坐标    r = +(Math.random() * this.radius).toFixed(4), // 粒子的半径    rateX = +(Math.random() * 2 - 1).toFixed(4), // 粒子在x方向运动的速率    rateY = +(Math.random() * 2 - 1).toFixed(4); // 粒子在y方向运动的速率  return { x, y, r, rateX, rateY };}// 随机生成100个点的坐标信息for (let i = 0; i < 100; i++) {  points.push(this.getPoint());}

将生成的点数组画到canvas上

function drawPoints() {  points.forEach((item, i) => {    ctx.beginPath();    ctx.arc(item.x, item.y, item.r, 0, Math.PI*2, false);    ctx.fillStyle = '#fff';    ctx.fill();    // 根据rateX和rateY移动点的坐标    if(item.x > 0 && item.x < width && item.y > 0 && item.y < height) {      item.x += item.rateX * rate;      item.y += item.rateY * rate;    } else {      // 如果粒子运动超出了边界,将这个粒子去除,同时重新生成一个新点。      points.splice(i, 1);      points.push(getPoint(radius));    }  });}

画线

遍历点数组,两两比较点坐标,如果两点之间距离小于某个值,在两个点之间画一条直线,lineWidth随两点之间距离改变,距离越大,线越细。

// 计算两点之间的距离function dis(x1, y1, x2, y2) {  var disX = Math.abs(x1 - x2),    disY = Math.abs(y1 - y2);  return Math.sqrt(disX * disX + disY * disY);}function drawLines() {  const len = points.length;  //对圆心坐标进行两两判断  for(let i = 0; i < len; i++) {    for(let j = len - 1; j >= 0; j--) {      const x1 = points[i].x,        y1 = points[i].y,        x2 = points[j].x,        y2 = points[j].y,        disPoint = dis(x1, y1, x2, y2);      // 如果两点之间距离小于150,画线      if(disPoint <= 150) {        ctx.beginPath();        ctx.moveTo(x1, y1);        ctx.lineTo(x2, y2);        ctx.strokeStyle = '#fff';        //两点之间距离越大,线越细,反之亦然        ctx.lineWidth = 1 - disPoint / distance;        ctx.stroke();      }    }  }}

动画

使用requestAnimationFrame循环调用draw方法(draw方法里包含画点和画线),同时在draw的时候根据rateXrateY来改动点的位置。

// 调用draw函数开启动画(function draw() {  ctx.clearRect(0, 0, width, height);  drawPoints();  // 如果不需要画线,取消下面这行代码即可。  drawLines();  window.requestAnimationFrame(draw);}());

看完上述内容,你们掌握使用canvas怎么实现一个粒子动画背景的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 使用canvas怎么实现一个粒子动画背景

本文链接: https://www.lsjlt.com/news/257913.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用canvas怎么实现一个粒子动画背景
    使用canvas怎么实现一个粒子动画背景?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建canvas首先需要在需要展示粒子背景的父元素中创建一个canvas标签, 指定wid...
    99+
    2023-06-09
  • 使用canvas怎么实现一个粒子动效
    本篇文章为大家展示了使用canvas怎么实现一个粒子动效,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。绘制刻度此例为小时刻度的绘制:表盘上共有12个小时,Math.PI为180&deg;,每...
    99+
    2023-06-09
  • 使用CSS3怎么实现一个粒子动画效果
    本篇文章给大家分享的是有关使用CSS3怎么实现一个粒子动画效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。按钮点击粒子动画<div class="b...
    99+
    2023-06-08
  • 使用Canvas怎么实现一个炫丽的粒子运动效果
    使用Canvas怎么实现一个炫丽的粒子运动效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。html 代码<!DOCTYPE html>&...
    99+
    2023-06-09
  • 怎么使用JavaScript+Canvas实现带跳动效果的粒子动画
    这篇“怎么使用JavaScript+Canvas实现带跳动效果的粒子动画”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使...
    99+
    2023-07-05
  • 怎么在Html5中使用canvas实现一个粒子时钟
    这篇文章将为大家详细讲解有关怎么在Html5中使用canvas实现一个粒子时钟,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先要创建一个html文件并添加一个canvas画布,如下:<...
    99+
    2023-06-09
  • vue3中怎么使用particles插件实现粒子背景
    这篇文章主要介绍了vue3中怎么使用particles插件实现粒子背景的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue3中怎么使用particles插件实现粒子背景文章都会有所收获,下面我们一起来看看吧。效...
    99+
    2023-06-29
  • vue3中使用VueParticles实现粒子动态背景效果
    目录particles.vue3官网可以仔细看下这里 有案例跟文档官网 Demo好了直接进入主题 安装使用Vue3 语法糖中使用配置单独写到文件particles.js,代码看起来简...
    99+
    2022-11-13
  • 使用Canvas怎么实现鼠标跟随动画背景
    本篇文章给大家分享的是有关使用Canvas怎么实现鼠标跟随动画背景,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如何制作动画常用的绘图动画的方式有以下几种:CSS3SVGCan...
    99+
    2023-06-09
  • 怎么在JavaScript中使用canvas实现一个随机粒子特效
    本篇文章给大家分享的是有关怎么在JavaScript中使用canvas实现一个随机粒子特效,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java的特点有哪些Java的特点有哪些...
    99+
    2023-06-14
  • 使用jQuery怎么实现一个动态粒子效果
    使用jQuery怎么实现一个动态粒子效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<!DOCTYPE html><html lan...
    99+
    2023-06-14
  • vue particles.js怎么实现炫酷的粒子动效登录背景
    本文小编为大家详细介绍“vue particles.js怎么实现炫酷的粒子动效登录背景”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue particles.js怎么实现炫酷的粒子动效登录背景”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-04
  • 怎么用Vue实现登录页面的动态粒子背景插件
    这篇文章主要介绍“怎么用Vue实现登录页面的动态粒子背景插件”,在日常操作中,相信很多人在怎么用Vue实现登录页面的动态粒子背景插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Vue实现登录页面的动态...
    99+
    2023-06-20
  • CSS3怎么实现大小不一的粒子旋转加载动画
    这篇文章主要介绍“CSS3怎么实现大小不一的粒子旋转加载动画”,在日常操作中,相信很多人在CSS3怎么实现大小不一的粒子旋转加载动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • 使用canvas怎么实现一个扭蛋机动画效果
    使用canvas怎么实现一个扭蛋机动画效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。布局扭蛋机的布局比较简单,只需要在基础背景上添加一些元素就可以,最主要的是canvas标...
    99+
    2023-06-09
  • 使用canvas怎么实现一个圆形进度条动画
    这期内容当中小编将会给大家带来有关使用canvas怎么实现一个圆形进度条动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. canvas的HTML部分很简单就一个canvas标签canvas画布的宽高...
    99+
    2023-06-09
  • 使用css3怎么实现一个背景动态渐变效果
    使用css3怎么实现一个背景动态渐变效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计...
    99+
    2023-06-08
  • 怎么在html5中利用canvas实现一个背景鼠标连线动态效果
    本篇文章为大家展示了怎么在html5中利用canvas实现一个背景鼠标连线动态效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。<!doctype html><html&...
    99+
    2023-06-09
  • 使用canvas怎么实现一个像素画板
    本篇文章给大家分享的是有关使用canvas怎么实现一个像素画板,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Pixel = function (o...
    99+
    2023-06-09
  • 使用canvas怎么绘制一个连线动画
    这篇文章将为大家详细讲解有关使用canvas怎么绘制一个连线动画,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。step1:绘制点首先创建个标签<canvas id="canv...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作