canvas实现彩色线条绘制屏保动画效果代码

代码语言:html

所属分类:动画

代码描述:canvas实现彩色线条绘制屏保动画效果代码

代码标签: canvas 彩色 线条 绘制 屏保 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
 
<meta charset="UTF-8">
 

 
 
<style>
:root {
 
background: black;
 
color: white;
}
</style>

 
</head>

<body translate="no">
 
 
     
<script  >
const particles = 4;

const minD = 0.05; // min/max distance
const maxD = 1;
const maxV = 20; // max velocity
const maxF = 10; // max force
const F = 0.0186125; // attraction force
const G = 0.003; // gravity

const canvas = document.createElement("canvas");
canvas.style.position = "absolute";
canvas.style.top = canvas.style.left = 0;
document.body.appendChild(canvas);

const buffer = document.createElement("canvas");
const bufferCtx = buffer.getContext("2d");

const ctx = canvas.getContext("2d");

let w, h, hw, hh;

const PI2 = Math.PI * 2;

const random = (min = -1, max = 1) => Math.random() * (max - min) + min;

const resize = () => {
  w = Math.max(innerWidth, 1) - innerWidth % 2;
  h = Math.max(innerHeight, 1) - innerHeight % 2;
  hw = w / 2;
  hh = h / 2;
  canvas.width = buffer.width = w;
  canvas.height = buffer.height = h;
  initContext();
};

const initContext = () => {
  ctx.translate(hw, hh);
  ctx.fillStyle = "white";
  ctx.strokeStyle = "white";
  ctx.lineWidth = 1.3;
  ctx.fillRect(-hw, -hh, w, h);
  bufferCtx.fillStyle = "black";
  bufferCtx.fillRect(0, 0, w, h);
};

resize(false);

const debounce = (fn, delay) => {
  let timeout;
  return () => {
    if (time.........完整代码请登录后点击上方下载按钮下载查看

网友评论0