电路板流动动画效果
代码语言:html
所属分类:动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <title>CodePen - Techy Nodes</title> <style> html, body { height: 100%; overflow: hidden; } canvas { line-height: 0; margin-bottom: 0; } .nodes-canvas { position: absolute; left: 0; top: 0; width: 100%; height: 100%; } .cache-canvas { background-color: #6622ff; } .main-canvas { opacity: 1; } .connection-paths { display: none; position: absolute; top: 0; left: 50%; height: 100%; width: auto; -webkit-transform: translate(-50%); transform: translate(-50%); } .connection-path { stroke: white; stroke-width: 2px; fill: none; } .center { position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } .message-text { text-align: center; color: #6622ff; font-size: 30vw; font-weight: 700; letter-spacing: -0.06em; line-height: 0; } .emblem { border-radius: 50%; height: 35vw; width: 35vw; background-color: #32e4b0; } </style> </head> <body translate="no"> <canvas id="cache-canvas" class="nodes-canvas cache-canvas"></canvas> <canvas id="main-canvas" class="nodes-canvas main-canvas"></canvas> <script src='http://repo.bfw.wiki/bfwrepo/js/dat.gui.min.js'></script> <script> const cacheCanvas = document.getElementById('cache-canvas'); const canvas = document.getElementById('main-canvas'); const cacheCtx = cacheCanvas.getContext('2d'); const ctx = canvas.getContext('2d'); const __bounds = {}; const __dpr = window.devicePixelRatio || 1; let __nodePaths = []; let __shouldDraw = true; let __isDrawing = false; const EPSILON = 0.0001; const pathFunctions = { spider: function (startX, startY, endX, endY, distance) { return [ startX, startY, startX + (Math.random() * 2 - 1) * distance, startY + (Math.random() * 2 - 1) * distance, endX + (Math.random() * 2 - 1) * distance, endY + (Math.random() * 2 - 1) * distance, endX, endY]; }, techy: function (startX, startY, endX, endY, distance) { const diffX = endX - startX; const diffY = endY - startY; const angle = Math.atan2(diffY, -diffX) + Math.PI * 1.25; const ret = [startX, startY,,, endX, endY]; //if above or below point if (angle % Math.PI < Math.PI / 2) { if (Math.random() > 0.5) { ret[2] = endX - Math.abs(diffY) * Math.sign(diffX); ret[3] = startY; } else { ret[2] = startX + Math.abs(diffY) * Math.sign(diffX); ret[3] = endY; } } //if left or right of point else { if (Math.random() > 0.5) { ret[2] = startX; ret[3] = endY - Math.abs(diffX) * Math.sign(diffY); } else { ret[2] = endX; ret[3] = startY + Math.abs(diffX) * Math.sign(diffY); } } return ret; } }; const spring = { k: -8.5, b: -61 }; const settings = .........完整代码请登录后点击上方下载按钮下载查看
网友评论0