<html>
<head>
<title>Canvas</title>
</head>
<body>
<!-- draw circle canvas block -->
<canvas id="canvas1"></canvas>
<!-- draw multiple circle canvas block -->
<canvas id="canvas2"></canvas>
<!-- animate single circle circle canvas block -->
<canvas id="canvas3"></canvas>
<!-- animate multiple circle canvas block -->
<canvas id="canvas4"></canvas>
<!-- animate multiple circle canvas block -->
<canvas id="canvas5"></canvas>
<!-- animate multiple circle with multiple color canvas block
<canvas id="canvas6"></canvas> -->
</body>
</html>
canvas{
border: 1px solid black;
}
body{
margin: 0;
}
// Single Circle - Get Canvas element by Id
var canvas1 = document.getElementById( "canvas1" );
// Set Canvas dimensions
canvas1.width = 200;
canvas1.height = 200;
// Get drawing context
var c1 = canvas1.getContext( '2d' );
// Begin Path
c1.beginPath();
// Arc Operation
c1.arc( 50, 50, 30, 0, Math.PI * 2, false );
// Fill Stroke
c1.stroke();
// Multiple Circle - Get Canvas element by Id
var canvas2 = document.getElementById("canvas2");
// Set Canvas dimensions
canvas2.width = 200;
canvas2.height = 200;
// Get drawing context
var c2 = canvas2.getContext('2d');
// Iterate to draw 4 circles
for( var i = 0; i < 4; i++ ) {
// Generate x and y values between 0 to 140 considering 30 pt radius
var x = 30 + Math.random() * 140;
var y = 30 + Math.random() * 140;
// Begin Path
c2.beginPath();
// Arc Operation
c2.arc( x, y, 30, 0, Math.PI * 2, false );
// Fill Stroke
c2.stroke();
}
// Single Animated Circle - Get Canvas element by Id
var canvas3 = document.getElementById("canvas3");
// Set Canvas dimensions
canvas3.width = 200;
canvas3.height = 200;
// Get drawing context
var c3 = canvas3.getContext( '2d' );
// Radius
var radius = 50;
// Starting Position
var x = radius + Math.random() * ( 200 - radius * 2 );
var y = radius + Math.random() * ( 200 - radius * 2 );
// Speed in x and y direction
var dx = (Math.random() - 0.5) * 2;
var dy = (Math.random() - 0.5) * 2;
function animate3() {
requestAnimationFrame( animate3 );
c3.clearRect( 0, 0 , 200, 200 );
if( x + radius > 200 || x - radius < 0 ) {
dx = -dx;
}
if( y + radius > 200 || y - radius < 0 ) {
dy = -dy;
}
x += dx;
y += dy;
c3.beginPath();
c3.arc( x, y, 50, 0, Math.PI * 2, false );
c3.stroke();
}
// Animate the Circle
animate3();
// Multiple Animated Circle - Get Canvas element by Id
var canvas4 = document.getElementById( "canvas4" );
// Set Canvas dimensions
canvas4.width = 200;
canvas4.height = 200;
// Get drawing context
var c4 = canvas4.getContext( '2d' );
// The Circle class
function Circle( x, y, dx, dy, radius ) {
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
this.radius = radius;
this.draw = function() {
c4.beginPath();
c4.arc( this.x, this.y, this.radius, 0, Math.PI * 2, false );
c4.strokeStyle = "blue";
c4.stroke();
}
this.update = function() {
if( this.x + this.radius > 200 || this.x - this.radius < 0 ) {
this.dx = -this.dx;
}
if( this.y + this.radius > 200 || this.y - this.radius < 0 ) {
this.dy = -this.dy;
}
this.x += this.dx;
this.y += this.dy;
this.draw();
}
}
var circles = [];
// Radius
var radius = 50;
for( var i = 0; i < 5; i++ ) {
// Starting Position
var x = Math.random() * ( 200 - radius * 2 ) + radius;
var y = Math.random() * ( 200 - radius * 2) + radius;
// Speed in x and y direction
var dx = ( Math.random() - 0.5 ) * 2;
var dy = ( Math.random() - 0.5 ) * 2;
circles.push( new Circle( x, y, dx, dy, radius ) );
}
function animate4() {
requestAnimationFrame( animate4 );
c4.clearRect( 0, 0, 200, 200 );
for( var r = 0; r < 5; r++ ) {
circles[ r ].update();
}
}
animate4();
// Multiple Colored Animated Circle - Get Canvas element by Id
var canvas5 = document.getElementById( "canvas5" );
// Set Canvas dimensions
canvas5.width = 200;
canvas5.height = 200;
// Get drawing context
var c5 = canvas5.getContext( '2d' );
// The Circle class
function ColoredCircle( x, y, dx, dy, radius, color ) {
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
this.radius = radius;
this.color = color;
this.draw = function() {
c5.beginPath();
c5.arc( this.x, this.y, this.radius, 0, Math.PI * 2, false );
c5.strokeStyle = this.color;
c5.stroke();
}
this.update = function() {
if( this.x + this.radius > 200 || this.x - this.radius < 0 ) {
this.dx = -this.dx;
}
if( this.y + this.radius > 200 || this.y - this.radius < 0 ) {
this.dy = -this.dy;
}
this.x += this.dx;
this.y += this.dy;
this.draw();
}
}
var coloredCircles = [];
var circleColors = [ 'red', 'green', 'blue', 'yellow', 'orange' ];
// Radius
var radius = 50;
for( var i = 0; i < 5; i++ ) {
// Starting Position
var x = Math.random() * ( 200 - radius * 2 ) + radius;
var y = Math.random() * ( 200 - radius * 2) + radius;
// Speed in x and y direction
var dx = ( Math.random() - 0.5 ) * 2;
var dy = ( Math.random() - 0.5 ) * 2;
// Color
var color = circleColors[ i ];
coloredCircles.push( new ColoredCircle( x, y, dx, dy, radius, color ) );
}
function animate5() {
requestAnimationFrame( animate5 );
c5.clearRect( 0, 0, 200, 200 );
for( var r = 0; r < 5; r++ ) {
coloredCircles[ r ].update();
}
}
animate5();
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.