Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body { background: linear-gradient(#000, #151515);overflow: hidden; } canvas { display: block; }
JavaScript
/*=============================================================================*/ /* Canvas Lightning v1 /*=============================================================================*/ var canvasLightning = function(c, cw, ch){ /*=============================================================================*/ /* Initialize /*=============================================================================*/ this.init = function(){ this.loop(); }; /*=============================================================================*/ /* Variables /*=============================================================================*/ var _this = this; this.c = c; this.ctx = c.getContext('2d'); this.cw = cw; this.ch = ch; this.mx = 0; this.my = 0; this.lightning = []; this.lightTimeCurrent = 0; this.lightTimeTotal = 50; /*=============================================================================*/ /* Utility Functions /*=============================================================================*/ this.rand = function(rMi, rMa){return ~~((Math.random()*(rMa-rMi+1))+rMi);}; this.hitTest = function(x1, y1, w1, h1, x2, y2, w2, h2){return !(x1 + w1 < x2 || x2 + w2 < x1 || y1 + h1 < y2 || y2 + h2 < y1);}; /*=============================================================================*/ /* Create Lightning /*=============================================================================*/ this.createL= function(x, y, canSpawn){ this.lightning.push({ x: x, y: y, xRange: this.rand(5, 30), yRange: this.rand(5, 25), path: [{ x: x, y: y }], pathLimit: this.rand(10, 35), canSpawn: canSpawn, hasFired: false }); }; /*=============================================================================*/ /* Update Lightning /*=============================================================================*/ this.updateL = function(){ var i = this.lightning.length; while(i--){ var light = this.lightning[i]; light.path.push({ x: light.path[light.path.length-1].x + (this.rand(0, light.xRange)-(light.xRange/2)), y: light.path[light.path.length-1].y + (this.rand(0, light.yRange)) }); if(light.path.length > light.pathLimit){ this.lightning.splice(i, 1) } light.hasFired = true; }; }; /*=============================================================================*/ /* Render Lightning /*=============================================================================*/ this.renderL = function(){ var i = this.lightning.length; while(i--){ var light = this.lightning[i]; this.ctx.strokeStyle = 'hsla(0, 100%, 100%, '+this.rand(10, 100)/100+')'; this.ctx.lineWidth = 1; if(this.rand(0, 30) == 0){ this.ctx.lineWidth = 2; } if(this.rand(0, 60) == 0){ this.ctx.lineWidth = 3; } if(this.rand(0, 90) == 0){ this.ctx.lineWidth = 4; } if(this.rand(0, 120) == 0){ this.ctx.lineWidth = 5; } if(this.rand(0, 150) == 0){ this.ctx.lineWidth = 6; } this.ctx.beginPath(); var pathCount = light.path.length; this.ctx.moveTo(light.x, light.y); for(var pc = 0; pc < pathCount; pc++){ this.ctx.lineTo(light.path[pc].x, light.path[pc].y); if(light.canSpawn){ if(this.rand(0, 100) == 0){ light.canSpawn = false; this.createL(light.path[pc].x, light.path[pc].y, false); } } } if(!light.hasFired){ this.ctx.fillStyle = 'rgba(255, 255, 255, '+this.rand(4, 12)/100+')'; this.ctx.fillRect(0, 0, this.cw, this.ch); } if(this.rand(0, 30) == 0){ this.ctx.fillStyle = 'rgba(255, 255, 255, '+this.rand(1, 3)/100+')'; this.ctx.fillRect(0, 0, this.cw, this.ch); } this.ctx.stroke(); }; }; /*=============================================================================*/ /* Lightning Timer /*=============================================================================*/ this.lightningTimer = function(){ this.lightTimeCurrent++; if(this.lightTimeCurrent >= this.lightTimeTotal){ var newX = this.rand(100, cw - 100); var newY = this.rand(0, ch / 2); var createCount = this.rand(1, 3); while(createCount--){ this.createL(newX, newY, true); } this.lightTimeCurrent = 0; this.lightTimeTotal = this.rand(30, 100); } } /*=============================================================================*/ /* Clear Canvas /*=============================================================================*/ this.clearCanvas = function(){ this.ctx.globalCompositeOperation = 'destination-out'; this.ctx.fillStyle = 'rgba(0,0,0,'+this.rand(1, 30)/100+')'; this.ctx.fillRect(0,0,this.cw,this.ch); this.ctx.globalCompositeOperation = 'source-over'; }; /*=============================================================================*/ /* Resize on Canvas on Window Resize /*=============================================================================*/ $(window).on('resize', function(){ _this.cw = _this.c.width = window.innerWidth; _this.ch = _this.c.height = window.innerHeight; }); /*=============================================================================*/ /* Animation Loop /*=============================================================================*/ this.loop = function(){ var loopIt = function(){ requestAnimationFrame(loopIt, _this.c); _this.clearCanvas(); _this.updateL(); _this.lightningTimer(); _this.renderL(); }; loopIt(); }; }; /*=============================================================================*/ /* Check Canvas Support /*=============================================================================*/ var isCanvasSupported = function(){ var elem = document.createElement('canvas'); return !!(elem.getContext && elem.getContext('2d')); }; /*=============================================================================*/ /* Setup requestAnimationFrame /*=============================================================================*/ var setupRAF = function(){ var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x){ window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; }; if(!window.requestAnimationFrame){ window.requestAnimationFrame = function(callback, element){ var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function() { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; }; if (!window.cancelAnimationFrame){ window.cancelAnimationFrame = function(id){ clearTimeout(id); }; }; }; /*=============================================================================*/ /* Define Canvas and Initialize /*=============================================================================*/ $(window).load(function(){ if(isCanvasSupported){ var c = document.getElementById('canvas'); var cw = c.width = window.innerWidth; var ch = c.height = window.innerHeight; var cl = new canvasLightning(c, cw, ch); setupRAF(); cl.init(); } });
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>canvas闪电-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号