原生js编写网格磁性鼠标跟随效果
代码语言:html
所属分类:背景
代码描述:原生js编写网格磁性鼠标跟随效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> * { margin: 0; padding: 0; color: #FFF; } canvas#canvas { display: block; background: #000; } ul#navigation { position: absolute; height: 100%; top: 0; right: 0; text-align: center; margin-right: 1.6rem; font-size: 0.8rem; -webkit-writing-mode: vertical-rl; -ms-writing-mode: tb-rl; writing-mode: vertical-rl; } ul#navigation > li { display: inline-block; } </style> </head> <body translate="no"> <canvas id="canvas">Canvas not supported.</canvas> <ul id="navigation"> <li>Please keep moving the mouse.</li> </ul> <script> (function () { 'use strict'; window.addEventListener('load', function () { var canvas = document.getElementById('canvas'); if (!canvas || !canvas.getContext) { return false; } /******************** Random Number ********************/ function rand(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } /******************** Var ********************/ var ctx = canvas.getContext('2d'); var X = canvas.width = window.innerWidth; var Y = canvas.height = window.innerHeight; var mouseX = null; var mouseY = null; var dist = 80; var lessThan = Math.sqrt(dist * dist + dist * dist); var mouseDist = 150; var shapeNum; var shapes = []; var ease = 0.3; var friction = 0.9; var lineWidth = 5; X > Y ? shapeNum = X / dist : shapeNum = Y / dist; if (X < 768) { lineWidth = 2; dist = 40; lessThan = Math.sqrt(dist * dist + dist * dist); mouseDist = 50; X > Y ? shapeNum = X / dist : shapeNum = Y / dist; } /******************** Animation ********************/ window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function (cb) { setTimeout(cb, 17); }; /******************** Shape ********************/ function Shape(ctx, x, y, i) { this.ctx = ctx; this.init(x, y, i); } Shape.prototype.init = function (x, y, i) { this.x = x; this.y = y; this.xi = x; this.yi = y; this.i = i; this.r = 1; this.v = { x: 0, y: 0 }; this.c = rand(0, 360); }; Shape.prototype.draw = function () { var ctx = this.ctx; ctx.save(); ctx.fillStyle = 'hsl(' + this.c + ', ' + '80%, 60%)'; ctx.beginPath(); ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false); ctx.fill(); ctx.restore(); }; Shape.prototype.mouseDist = function () { var x = mouseX - this.x; var y = mouseY - this.y; var d = x * x + y * y; var dist = Math.sqrt(d); if (dist < mouseDist) { this.v.x = +this.v.x; this.v.y = +this.v.y; var colAngle = M.........完整代码请登录后点击上方下载按钮下载查看
网友评论0