js实现瀑布动画效果
代码语言:html
所属分类:动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> - Canvas Waterfall</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css"> <style> body { background: #222; } #container { box-shadow: inset 0 1px 0 #444, 0 -1px 0 #000; height: 140px; left: 50%; margin: -70px 0 0 -60px; position: absolute; top: 50%; width: 120px; } canvas { display: block; margin: 0 auto; } </style> </head> <body translate="no"> <div id="container"> <canvas id="waterfall"></canvas> </div> <script src='http://repo.bfw.wiki/bfwrepo/js/jquery.17.js'></script> <script> var waterfallCanvas = function (c, cw, ch) { var _this = this; this.c = c; this.ctx = c.getContext('2d'); this.cw = cw; this.ch = ch; this.particles = []; this.particleRate = 6; this.gravity = .15; this.init = function () { this.loop(); }; this.reset = function () { this.ctx.clearRect(0, 0, this.cw, this.ch); this.particles = []; }; this.rand = function (rMi, rMa) { return ~~(Math.random() * (rMa - rMi + 1) + rMi); }; this.Particle = function () { var newWidth = _this.rand(1, 20); var newHeight = _this.rand(1, 45); this.x = _this.rand(10 + newWidth / 2, _this.cw - 10 - newWidth / 2); this.y = -newHeight; this.vx = 0; this.vy = 0; this.width = newWidth; this.height = newHeight; this.hue = _this.rand(200, 220); this.saturation = _this.rand(30, 60); this.lightness = _this.rand(30, 60); }; this.Particle.prototype.update = function (i) { this.vx += this.vx; this.vy += _this.gravity; this.x += this.vx; this.y += this.vy; }; this.Particle.prototype.render = function () { _this.ctx.strokeStyle = 'hsla(' + this.hue + ', ' + this.saturation + '%, ' + this.lightness + '%, .05)'; _this.ctx.beginPath(); _this.ctx.moveTo(this.x, this.y); _this.ctx.lineTo(this.x, this.y + this.height); _this.ctx.lineWidth = this.width / 2; _this.ctx.lineCap = 'round'; _this.ctx.stroke(); }; this.Particle.prototype.renderBubble = function () { _this.ctx.fillStyle = 'hsla(' + this.hue + ', 40%, 40%, 1)'; _this.ctx.fillStyle = 'hsla(' + this.hue + ', ' + this.saturation + '%, ' + this.lightness + '%, .3)'; _this.ctx.beginPath(); _this.ctx.arc(this.x + this.width / 2, _this.ch - 20 - _this.rand(0, 10), _this.rand(1, 8), 0, Math.PI * 2, false); _this.ctx.fill(); }; this.createParticles = function () { .........完整代码请登录后点击上方下载按钮下载查看
网友评论0