Canvas API
The HTML Canvas Element
The HTML <canvas> element is a bitmapped screen area.
The Canvas API allows JavaScript to draw graphics inside a canvas element.
The HTML Canvas API
The HTML Canvas API is a 2D context that allows JavaScript to
draw shapes, lines, curves, boxes, text, and images in a
<canvas>
element in HTML.
The Canvas API also allows colors, rotations, transparencies, and other pixel manipulations.
Adding Canvas to HTML
Add a canvas element to any HTML page with the
<canvas>
tag:
Example
<canvas id="myCanvas" width="300" height="150">
Your browser does not support HTML5 canvas.
</canvas>
Try it Yourself »
Note
"Your browser does not support HTML5 canvas" is the text you want to display if the browser does not support canvas.
Browser Support
The <canvas>
element is an HTML5 standard (2014).
Canvas API
is supported in all modern browsers:
Chrome | Edge | Firefox | Safari | Opera | IE |
Yes | Yes | Yes | Yes | Yes | 9-11 |
How to Access a Canvas Element
Access any <canvas>
element with the HTML
DOM method getElementById()
:
const canvas = document.getElementById("myCanvas");
Then create a 2D context to draw in:
const ctx = canvas.getContext("2d");
Note
A <canvas>
element has no drawing abilities.
You must use JavaScript to draw any graphics.
The getContext()
method returns an object
with the tools (methods) for drawing on the canvas.
Now you can draw:
ctx.fillStyle = "#FF0000";
ctx.fillRect(20, 20, 150, 100);
Full Example
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(20, 20, 150, 100);
You can also create a new <canvas>
element
with the document.createElement()
method:
Complete Canvas API Reference
This reference covers the properties and methods of the getContext("2d") object, which can be used to draw text, lines, boxes, circles, and more on the canvas.
Colors, Styles, and Shadows
Property | Description |
---|---|
fillStyle | Sets or returns the color, gradient, or pattern used to fill the drawing |
shadowBlur | Sets or returns the blur level for shadows |
shadowColor | Sets or returns the color to use for shadows |
shadowOffsetX | Sets or returns the horizontal distance of the shadow from the shape |
shadowOffsetY | Sets or returns the vertical distance of the shadow from the shape |
strokeStyle | Sets or returns the color, gradient, or pattern used for strokes |
Method | Description |
---|---|
addColorStop() | Specifies the colors and stop positions in a gradient object |
createLinearGradient() | Creates a linear gradient (to use on canvas content) |
createPattern() | Repeats a specified element in the specified direction |
createRadialGradient() | Creates a radial/circular gradient (to use on canvas content) |
Line Styles
Property | Description |
---|---|
lineCap | Sets or returns the style of the end caps for a line |
lineJoin | Sets or returns the type of corner created, when two lines meet |
lineWidth | Sets or returns the current line width |
miterLimit | Sets or returns the maximum miter length |
Rectangles
Method | Description |
---|---|
rect() | Creates a rectangle |
fillRect() | Draws a "filled" rectangle |
strokeRect() | Draws a rectangle (no fill) |
clearRect() | Clears the specified pixels within a given rectangle |
Paths
Method | Description |
---|---|
fill() | Fills the current drawing (path) |
stroke() | Actually draws the path you have defined |
beginPath() | Begins a path, or resets the current path |
moveTo() | Moves the path to the specified point in the canvas, without creating a line |
closePath() | Creates a path from the current point back to the starting point |
lineTo() | Adds a new point and creates a line from that point to the last specified point in the canvas |
clip() | Clips a region of any shape and size from the original canvas |
quadraticCurveTo() | Creates a quadratic Bézier curve |
bezierCurveTo() | Creates a cubic Bézier curve |
arc() | Creates an arc/curve (used to create circles, or parts of circles) |
arcTo() | Creates an arc/curve between two tangents |
isPointInPath() | Returns true if the specified point is in the current path, otherwise false |
Transformations
Method | Description |
---|---|
scale() | Scales the current drawing bigger or smaller |
rotate() | Rotates the current drawing |
translate() | Remaps the (0,0) position on the canvas |
transform() | Replaces the current transformation matrix for the drawing |
setTransform() | Resets the current transform to the identity matrix. Then runs transform() |
Text
Property | Description |
---|---|
font | Sets or returns the current font properties for text content |
textAlign | Sets or returns the current alignment for text content |
textBaseline | Sets or returns the current text baseline used when drawing text |
Method | Description |
---|---|
fillText() | Draws "filled" text on the canvas |
strokeText() | Draws text on the canvas (no fill) |
measureText() | Returns an object that contains the width of the specified text |
Image Drawing
Method | Description |
---|---|
drawImage() | Draws an image, canvas, or video onto the canvas |
Pixel Manipulation
Property | Description |
---|---|
width | Returns the width of an ImageData object |
height | Returns the height of an ImageData object |
data | Returns an object that contains image data of a specified ImageData object |
Method | Description |
---|---|
createImageData() | Creates a new, blank ImageData object |
getImageData() | Returns an ImageData object that copies the pixel data for the specified rectangle on a canvas |
putImageData() | Puts the image data (from a specified ImageData object) back onto the canvas |
Compositing
Property | Description |
---|---|
globalAlpha | Sets or returns the current alpha or transparency value of the drawing |
globalCompositeOperation | Sets or returns how a new image are drawn onto an existing image |
Other
Method | Description |
---|---|
save() | Saves the state of the current context |
restore() | Returns previously saved path state and attributes |
createEvent() | |
getContext() | |
toDataURL() |
Standard Properties and Events
The canvas object also supports the standard properties and events.
Related Pages
HTML tutorial: HTML5 Canvas
HTML reference: HTML <canvas> tag