Skip to content

Canvas Home

The HTML <canvas> element provides a powerful and flexible way to draw graphics, animations, and other visual elements on a web page dynamically using JavaScript. Think of it as a resolution-dependent bitmap drawing surface.

The <canvas> element itself is merely a container. All drawing operations are performed using JavaScript, typically by accessing the canvas’s 2D rendering context (or WebGL for 3D graphics).

The Canvas API offers a rich set of functions for drawing paths (lines, shapes), boxes, circles, text, and for compositing images.

The <canvas> element is widely supported by all modern web browsers, including:

  • Google Chrome (since version 4.0+)
  • Mozilla Firefox (since version 2.0+)
  • Microsoft Edge (all versions, and Internet Explorer since version 9.0)
  • Safari (since version 3.1+)
  • Opera (since version 9.0+)

For practical purposes, you can assume full support in any browser relevant today. Fallbacks for very old browsers (like text content inside the <canvas> tags) are rarely needed anymore.

Canvas allows for drawing customizable, colorful text. You can control fonts, sizes, styles, alignment, and apply effects like shadows or gradients to text elements, which can also be animated.

Canvas excels at creating complex graphical representations, such as charts (bar, line, pie), graphs, and other data visualizations. Its pixel-level control enables detailed and custom visual outputs.

Canvas objects can be animated. By redrawing scenes rapidly, you can create anything from simple bouncing balls and particle effects to complex interactive animations and visual sequences. requestAnimationFrame is the modern standard for smooth canvas animations.

Canvas drawings can respond to user interactions like mouse clicks, mouse movements, keyboard input, and touch events. This allows for the creation of interactive graphics, drawing applications, and games.

The combination of drawing capabilities, animation control, and interactivity makes Canvas a popular choice for developing 2D games directly in the browser without relying on external plugins.

Canvas can be used to load, display, and manipulate images at a pixel level. This includes cropping, resizing, filtering (e.g., grayscale, sepia), and compositing multiple images.

In your HTML file, a <canvas> element is defined like this:

<canvas id="myCanvas" width="200" height="100">
Your browser does not support the HTML canvas tag.
</canvas>

Key attributes:

  • id: Essential for referencing the canvas element from JavaScript.
  • width: Defines the width of the canvas drawing surface in CSS pixels.
  • height: Defines the height of the canvas drawing surface in CSS pixels.

Important: Always set the width and height attributes directly on the <canvas> tag itself, not through CSS. Styling the canvas width and height with CSS will scale the drawing surface, often resulting in blurry or distorted graphics. The attributes define the actual number of pixels available for drawing.

Tip: You can include fallback content between the opening and closing <canvas> tags. This content will be displayed by browsers that do not support canvas (which is very rare today).

To add a border for visual clarity during development, you can use CSS:

<!-- In your HTML file -->
<canvas id="myCanvasWithBorder" width="200" height="100"></canvas>
<!-- In your CSS file or <style> tag -->
<style>
#myCanvasWithBorder {
border: 1px solid #000000; /* Black border */
}
</style>

The subsequent chapters will guide you through how to use JavaScript to draw on this canvas element.