网格线条背景动画效果
代码语言:html
所属分类:背景
代码描述:网格线条背景动画效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body { margin: 0; background-color: #222; color: #fff; font-family: monospace; user-select: none; } canvas { display: block; width: 100vw; height: 100vh; } .config { position: absolute; top: 0; left: 0; width: 360px; padding: 10px; background: rgba(0, 0, 0, 0.7); border-radius: 10px; } .config.collapsed .row { display: none; } .config.collapsed .buttons { margin-top: 0; } .config.collapsed #openText { display: block; } .config.collapsed #closeText { display: none; } .config:not(.collapsed) #openText { display: none; } .config:not(.collapsed) #closeText { display: block; } .row { display: flex; align-items: center; padding: 2px 0; } label { display: block; width: 120px; } input[type='range'] { display: block; flex-grow: 1; } output { display: block; text-align: right; width: 50px; } .buttons { display: flex; justify-content: center; margin-top: 10px; } button { border: 1px solid white; border-radius: 5px; background: transparent; color: white; outline: 0; } button:hover { background: white; color: black; } button:active { background: darkgray; } </style> </head> <body translate="no"> <canvas id="canvas"></canvas> <div class="config"> <div class="row"> <label for="cellWidth">Cell Width:</label> <input type="range" id="cellWidth" min="10" max="100" step="1" value="24" /> <output id="cellWidthOutput">24</output> </div> <div class="row"> <label for="cellHeight">Cell Height:</label> <input type="range" id="cellHeight" min="10" max="100" step="1" value="24" /> <output id="cellHeightOutput">24</output> </div> <div class="row"> <label for="lineWidth">Line Width:</label> <input type="range" id="lineWidth" min="1" max="10" step="1" value="4" /> <output id="lineWidthOutput">4</output> </div> <div class="row"> <label for="lineLengthFactor">Line Length:</label> <input type="range" id="lineLengthFactor" min="0.1" max="10" step="0.1" value="5.0" /> <output id="lineLengthFactorOutput">5.0</output> </div> <div class="row"> <label for="noiseScaleX">Noise Scale X:</label> <input type="range" id="noiseScaleX" min="0.0001" max="1" step="0.0001" value="0.05" /> <output id="noiseScaleXOutput">0.05</output> </div> <div class="row"> <label for="noiseScaleY">Noise Scale Y:</label> <input type="range" id="noiseScaleY" min="0.0001" max="1" step="0.0001" value="0.05" /> <output id="noiseScaleYOutput">0.05</output> </div> <div class="row"> <label for="speedFactor">Speed:</label> <input type="range" id="speedFactor" min="0.0001" max="0.1" step="0.0001" value="0.008" /> <output id="speedFactorOutput">0.008</output> </div> <div class="buttons"> <button id="controlsBtn"> <span id="openText">open controls</span> <span id="closeText">close controls</span> </button> </div> </div> <script> //--------------------------------------------------------------- // ---> https://github.com/josephg/noisejs/blob/master/perlin.js //--------------------------------------------------------------- /* * A speed-improved perlin and simplex noise algorithms for 2D. * * Based on example code by Stefan Gustavson (stegu@itn.liu.se). * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu). * Better rank ordering method by Stefan Gustavson in 2012. * Converted to Javascript by Joseph Gentle. * * Version 2012-03-09 * * This code was placed in the public domain by its original author, * Stefan Gustavson. You may use it as you see fit, but * attribution is appreciated. * */ (function (global) { var module = global.noise = {}; function Grad(x, y, z) { this.x = x;this.y = y;this.z = z; } Grad.prototype.dot2 = function (x, y) { return this.x * x + this.y * y; }; Grad.prototype.dot3 = function (x, y, z) { return this.x * x + this.y * y + this.z * z; }; var grad3 = [new Grad(1, 1, 0), new Grad(-1, 1, 0), new Grad(1, -1, 0), new Grad(-1, -1, 0), new Grad(1, 0, 1), new Grad(-1, 0, 1), new Grad(1, 0, -1), new Grad(-1, 0, -1), new Grad(0, 1, 1), new Grad(0, -1, 1), new Grad(0, 1, -1), new Grad(0, -1, -1)]; var p = [151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180]; // To remove the need for index wrapping, double the permutation table length var perm = new Array(512); var gradP = new Array(512); // This isn't a very good seeding function, but it works ok. It supports 2^16 // different seed values. Write something better if you need more seeds. module.seed = function (seed) { if (seed > 0 && seed < 1) { // Scale the seed out seed *= 65536; } seed = Math.floor(seed); if (seed < 256) { seed |= seed << 8; } for (var i = 0; i < 256; i++) { var v; if .........完整代码请登录后点击上方下载按钮下载查看
网友评论0