互动三角形圈堆叠动画效果
代码语言:html
所属分类:动画
代码描述:互动三角形圈堆叠动画效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> * { margin: 0; padding: 0; color: #FFF; } p.count { position: absolute; left: 0; bottom: 0; padding: 1.6rem; } canvas#canvas { display: block; background: #000; } ul#navigation { position: absolute; height: 100%; top: 0; right: 0; -webkit-writing-mode: vertical-rl; -ms-writing-mode: tb-rl; writing-mode: vertical-rl; text-align: center; margin-right: 1.6rem; font-size: 0.8rem; } ul#navigation>li { display: inline-block; } </style> </head> <body translate="no"> <canvas id="canvas">Canvas not supported.</canvas> <ul id="navigation"> <li>Scroll up, down and click.</li> </ul> <p class="count"><input type="range" id="range" min="1" max="36" step="1" value="12"></p> <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 range = document.getElementById('range'); var ctx = canvas.getContext('2d'); var X = canvas.width = window.innerWidth; var Y = canvas.height = window.innerHeight; var mouseX = null; var mouseY = null; var triangles = []; var triangleNum = range.value; var angle = 120; var radian = angle * Math.PI / 180; var ease = 0.5; var friction = 0.5; var flg = true; /******************** Animation ********************/ window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function (cb) { setTimeout(cb, 17); }; /******************** Triangle ********************/ function Triangle(ctx, x, y, i) { this.ctx = ctx; this.init(x, y, i); } Triangle.prototype.init = function (x, y, i) { this.x = x; this.y = y; this.x1; this.y1; this.r = 50; this.lw = 5; this.a = 30 * i; this.rad = this.a * Math.PI / 180; this.points = []; this.getPoints(); this.closestIndex = 0; this.v = { x: 0, y: 0 }; this.c = { r: rand(0, 255), g: rand(0, 255), b: rand(200, 255) }; }; Triangle.prototype.getPoints = function () { for (var i = 0; i < 3; i++) { var x = Math.cos(radian * i) * this.r + this.x; var y = Math.sin(radian * i) * this.r + this.y; var a = rand(0, 360); var rad = a * Math.PI / 180; var point = [x, y, rad]; this.points.push(point); } }; var dist = 50; Triangle.prototype.draw = function () { var ctx = this.ctx; ctx.save(); ctx.lineWidth = this.lw; ctx.globalCompositeOperation = 'lighter'; ctx.strokeStyle = 'rgb(' + this.c.r + ', ' + this.c.g + ', ' + this.c.b + ')'; if (flg === true) { ctx.translate(this.x, this.y); ctx.scale(Math.cos(this.rad) * 2, Math.sin(this.rad) * 2); .........完整代码请登录后点击上方下载按钮下载查看
网友评论0