这次给大家带来JS HTML5做出鼠标绑定粒子流动画,JS HTML5做出鼠标绑定粒子流动画的注意事项有哪些,下面就是实战案例,一起来看一下。
nbsp;html> <meta> <title>粒子效果演示</title> <meta> <meta> <style> html, body { text-align: center; margin:0; padding:0; background: #000000; color: #666666; line-height: 1.25em; } #outer { position: absolute; top: 50%; left: 50%; width: 1px; height: 1px; overflow: visible; } #canvasContainer { position: absolute; width: 1000px; height: 560px; top: -280px; left: -500px; } canvas { border: 1px solid #333333; } a { color: #00CBCB; text-decoration:none; font-weight:bold; } a:hover { color:#FFFFFF; } #output { font-family: Arial, Helvetica, sans-serif; font-size: 0.75em; margin-top:4px; } #footer{ font-size: 0.6em; font-family: Arial, Helvetica, sans-serif; position: absolute; bottombottom:8px; width:98%; } </style> <p> </p><p> <canvas></canvas> </p><p></p> <script> //javascript部分 (function(){ var PI_2 = Math.PI * 2; var canvasW = 1000; var canvasH = 560; var numMovers = 600; var friction = 0.96; var movers = []; var canvas; var ctx; var canvasp; var outerp; var mouseX; var mouseY; var mouseVX; var mouseVY; var prevMouseX; var prevMouseY; var isMouseDown; function init(){ canvas = document.getElementById("mainCanvas"); if ( canvas.getContext ){ setup(); setInterval( run , 33 ); trace('你们好'); } else{ trace("Sorry, needs a recent version of Chrome, Firefox, Opera, Safari, or Internet Explorer 9."); } } function setup(){ outerp = document.getElementById("outer"); canvasp = document.getElementById("canvasContainer"); ctx = canvas.getContext("2d"); var i = numMovers; while ( i-- ){ var m = new Mover(); m.x = canvasW * 0.5; m.y = canvasH * 0.5; m.vX = Math.cos(i) * Math.random() * 34; m.vY = Math.sin(i) * Math.random() * 34; movers[i] = m; } mouseX = prevMouseX = canvasW * 0.5; mouseY = prevMouseY = canvasH * 0.5; document.onmousedown = onDocMouseDown; document.onmouseup = onDocMouseUp; document.onmousemove = onDocMouseMove; } function run(){ ctx.globalCompositeOperation = "source-over"; ctx.fillStyle = "rgba(8,8,12,0.65)"; ctx.fillRect( 0 , 0 , canvasW , canvasH ); ctx.globalCompositeOperation = "lighter"; mouseVX = mouseX - prevMouseX; mouseVY = mouseY - prevMouseY; prevMouseX = mouseX; prevMouseY = mouseY; var toDist = canvasW * 0.86; var stirDist = canvasW * 0.125; var blowDist = canvasW * 0.5; var Mrnd = Math.random; var Mabs = Math.abs; var i = numMovers; while ( i-- ){ var m = movers[i]; var x = m.x; var y = m.y; var vX = m.vX; var vY = m.vY; var dX = x - mouseX; var dY = y - mouseY; var d = Math.sqrt( dX * dX + dY * dY ) || 0.001; dX /= d; dY /= d; if ( isMouseDown ){ if ( d < blowDist ){ var blowAcc = ( 1 - ( d / blowDist ) ) * 14; vX += dX * blowAcc + 0.5 - Mrnd(); vY += dY * blowAcc + 0.5 - Mrnd(); } } if ( d < toDist ){ var toAcc = ( 1 - ( d / toDist ) ) * canvasW * 0.0014; vX -= dX * toAcc; vY -= dY * toAcc; } if ( d < stirDist ){ var mAcc = ( 1 - ( d / stirDist ) ) * canvasW * 0.00026; vX += mouseVX * mAcc; vY += mouseVY * mAcc; } vX *= friction; vY *= friction; var avgVX = Mabs( vX ); var avgVY = Mabs( vY ); var avgV = ( avgVX + avgVY ) * 0.5; if( avgVX < .1 ) vX *= Mrnd() * 3; if( avgVY < .1 ) vY *= Mrnd() * 3; var sc = avgV * 0.45; sc = Math.max( Math.min( sc , 3.5 ) , 0.4 ); var nextX = x + vX; var nextY = y + vY; if ( nextX > canvasW ){ nextX = canvasW; vX *= -1; } else if ( nextX < 0 ){ nextX = 0; vX *= -1; } if ( nextY > canvasH ){ nextY = canvasH; vY *= -1; } else if ( nextY < 0 ){ nextY = 0; vY *= -1; } m.vX = vX; m.vY = vY; m.x = nextX; m.y = nextY; ctx.fillStyle = m.color; ctx.beginPath(); ctx.arc( nextX , nextY , sc , 0 , PI_2 , true ); ctx.closePath(); ctx.fill(); } } function onDocMouseMove( e ){ var ev = e ? e : window.event; mouseX = ev.clientX - outerp.offsetLeft - canvasp.offsetLeft; mouseY = ev.clientY - outerp.offsetTop - canvasp.offsetTop; } function onDocMouseDown( e ){ isMouseDown = true; return false; } function onDocMouseUp( e ){ isMouseDown = false; return false; } function Mover(){ this.color = "rgb(" + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + ")"; this.y = 0; this.x = 0; this.vX = 0; this.vY = 0; this.size = 1; } function rect( context , x , y , w , h ){ context.beginPath(); context.rect( x , y , w , h ); context.closePath(); context.fill(); } function trace( str ){ document.getElementById("output").innerHTML = str; } window.onload = init; })(); </script>
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上是JS HTML5做出鼠标绑定粒子流动画的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript核心数据类型在浏览器和Node.js中一致,但处理方式和额外类型有所不同。1)全局对象在浏览器中为window,在Node.js中为global。2)Node.js独有Buffer对象,用于处理二进制数据。3)性能和时间处理在两者间也有差异,需根据环境调整代码。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

记事本++7.3.1
好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具