console
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
html,body{
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
</body>
</html>
<script type="text/javascript">
window.requestAnimFrame = ( function() {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function( callback ) {
window.setTimeout( callback, 1000 / 60 );
};
})();
function drawBg(cvs)
{
cvs.beginPath();
cvs.fillStyle="#020215";
cvs.fillRect(0,0,wW,wH);
cvs.save();
}
function ran255(){
return Math.round(Math.random()*255);
}
function Color(){
this.r=ran255();
this.g=ran255();
this.b=ran255();
this.rgb="rgba("+this.r+","+this.g+","+this.b+",1)";
}
window.onload=function()
{
var can=document.getElementById("canvas");
can.width=wW=window.innerWidth;
can.height=wH=window.innerHeight;
var cvs=can.getContext("2d");
drawBg(cvs);
var Dots=
{
n:300,
minDis:50,
d_mouse:100,
array:[],
radiusArr:[]
}
function Dot()
{
this.color = new Color();
this.x = Math.round(Math.random()*wW);
this.y = Math.round(Math.random()*wH);
this.vx = (Math.random()-0.5)*3;
this.vy = (Math.random()-0.5)*3;
this.radius = Math.round(Math.random()*5);
}
Dot.prototype.draw = function() {
cvs.beginPath();
cvs.fillStyle = this.color.rgb;
cvs.arc(this.x,this.y,this.radius,0,360,false);
cvs.fill();
};
for(var i=0;i<Dots.n;i++)
{
var dotObj = new Dot();
Dots.array.push(dotObj);
Dots.radiusArr.push(dotObj.radius);
}
function drawDots()
{
drawBg(cvs);
for(var i=0;i<Dots.n;i++)
{
Dots.array[i].draw();
}
}
drawDots();
function moveDots(){
for(var i=0;i<Dots.n;i++)
{
var dot = Dots.array[i];
if(dot.x <0 || dot.x>wW)
{
dot.vx=-dot.vx;
}
if(dot.y <0 || dot.y>wH)
{
dot.vy=-dot.vy;
}
dot.x += dot.vx;
dot.y += dot.vy;
}
}
function connect()
{
function mixColor(dot1,dot2)
{
var color1=dot1.color;
var color2=dot2.color;
var r1=dot1.radius;
var r2=dot2.radius;
var r=Math.floor((color1.r*r1+color2.r*r2)/(r1+r2));
var g=Math.floor((color1.g*r1+color2.g*r2)/(r1+r2));
var b=Math.floor((color1.b*r1+color2.b*r2)/(r1+r2));
return "rgba("+r+","+g+","+b+",1)"
}
for(var i=0;i<Dots.n;i++)
{
for(var j=0;j<Dots.n;j++)
{
var dot1 = Dots.array[i];
var dot2 = Dots.array[j];
var color=mixColor(dot1,dot2);
if(Math.abs(dot1.x-dot2.x)<Dots.minDis && Math.abs(dot1.y-dot2.y)<Dots.minDis)
{
cvs.lineWidth=0.2;
cvs.beginPath();
cvs.strokeStyle=color;
cvs.moveTo(dot1.x,dot1.y);
cvs.lineTo(dot2.x,dot2.y);
cvs.stroke();
}
}
}
}
can.onmousemove=function(ev)
{
var ev=window.event || ev;
var pX=ev.pageX;
var pY=ev.pageY;
for(var i=0;i<Dots.n;i++)
{
if(Math.abs(Dots.array[i].x-pX)<Dots.d_mouse && Math.abs(Dots.array[i].y-pY)<Dots.d_mouse)
{
var r=Dots.radiusArr[i]*5;
Dots.array[i].radius=r;
}
else{
Dots.array[i].radius=Dots.radiusArr[i];
}
}
}
function infinateDot()
{
cvs.clearRect(0,0,wW,wH);
moveDots();
drawDots();
connect();
requestAnimationFrame(infinateDot)
}
infinateDot();
}
</script>