The HTMLCanvasElement
interface provides properties and methods for manipulating the layout and presentation of <canvas>
elements. The HTMLCanvasElement
interface also inherits the properties and methods of the HTMLElement
interface.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 20%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 120" preserveAspectRatio="xMinYMin meet"><a xlink:href="/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/Node" target="_top"><rect x="151" y="1" width="75" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="188.5" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">Node</text></a><polyline points="226,25 236,20 236,30 226,25" stroke="#D4DDE4" fill="none"/><line x1="236" y1="25" x2="266" y2="25" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/Element" target="_top"><rect x="266" y="1" width="75" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="303.5" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">Element</text></a><polyline points="341,25 351,20 351,30 341,25" stroke="#D4DDE4" fill="none"/><line x1="351" y1="25" x2="381" y2="25" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/HTMLElement" target="_top"><rect x="381" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="436" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">HTMLElement</text></a><polyline points="491,25 501,20 501,30 491,25" stroke="#D4DDE4" fill="none"/><line x1="501" y1="25" x2="509" y2="25" stroke="#D4DDE4"/><line x1="509" y1="25" x2="509" y2="90" stroke="#D4DDE4"/><line x1="509" y1="90" x2="492" y2="90" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/HTMLCanvasElement" target="_top"><rect x="321" y="65" width="170" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="406" y="94" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">HTMLCanvasElement</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Properties
Inherits properties from its parent, HTMLElement
.
HTMLCanvasElement.height
- The
height
HTML attribute of the<canvas>
element is a positiveinteger
reflecting the number of logical pixels (or RGBA values) going down one column of the canvas. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of150
is used. If no [separate] CSS height is assigned to the<canvas>
, then this value will also be used as the height of the canvas in the length-unit CSS Pixel. HTMLCanvasElement.width
- The
width
HTML attribute of the<canvas>
element is a positiveinteger
reflecting the number of logical pixels (or RGBA values) going across one row of the canvas. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of300
is used. If no [separate] CSS width is assigned to the<canvas>
, then this value will also be used as the width of the canvas in the length-unit CSS Pixel. HTMLCanvasElement.mozOpaque
- Is a
Boolean
reflecting themoz-opaque
HTML attribute of the<canvas>
element. It lets the canvas know whether or not translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported in Mozilla-based browsers; use the standardizedcanvas.getContext('2d', { alpha: false })
instead. HTMLCanvasElement.mozPrintCallback
- Is a
function
that is Initially null. Web content can set this to a JavaScript function that will be called when the canvas is to be redrawn while the page is being printed. When called, the callback is passed a "printState" object that implements the MozCanvasPrintState interface. The callback can get the context to draw to from the printState object and must then call done() on it when finished. The purpose ofmozPrintCallback
is to obtain a higher resolution rendering of the canvas at the resolution of the printer being used. See this blog post.
Methods
Inherits methods from its parent, HTMLElement
.
HTMLCanvasElement.captureStream()
- Returns a
CanvasCaptureMediaStream
that is a real-time video capture of the surface of the canvas. HTMLCanvasElement.getContext()
- Returns a drawing context on the canvas, or null if the context ID is not supported. A drawing context lets you draw on the canvas. Calling getContext with
"2d"
returns aCanvasRenderingContext2D
object, whereas calling it with"webgl"
(or"experimental-webgl"
) returns aWebGLRenderingContext
object. This context is only available on browsers that implement WebGL. HTMLCanvasElement.toDataURL()
- Returns a data-URL containing a representation of the image in the format specified by the
type
parameter (defaults topng
). The returned image is in a resolution of 96dpi. HTMLCanvasElement.toBlob()
- Creates a
Blob
object representing the image contained in the canvas; this file may be cached on the disk or stored in memory at the discretion of the user agent. HTMLCanvasElement.transferControlToOffscreen()
- Transfers control to an
OffscreenCanvas
object, either on the main thread or on a worker.
Obsolete methods
HTMLCanvasElement.mozGetAsFile()
- Returns a
File
object representing the image contained in the canvas; this file is a memory-based file, with the specifiedname
. Iftype
is not specified, the image type isimage/png
.
Events
Listen to these events using addEventListener()
.
webglcontextcreationerror
- Fired if the user agent is unable to create a
WebGLRenderingContext
orWebGL2RenderingContext
context. webglcontextlost
- Fired if the user agent detects that the drawing buffer associated with a
WebGLRenderingContext
orWebGL2RenderingContext
object has been lost. webglcontextrestored
- Fired if the user agent restores the drawing buffer for a
WebGLRenderingContext
orWebGL2RenderingContext
object.
Specifications
Specification | Status | Comment |
---|---|---|
HTML Living Standard The definition of 'HTMLCanvasElement' in that specification. |
Living Standard | Primary definition of HTMLCanvasElement . |
Media Capture from DOM Elements The definition of 'HTMLCanvasElement' in that specification. |
Working Draft | Adds the method captureStream() . |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
HTMLCanvasElement | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 9 | Opera
Full support
9
| Safari Full support 2 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android
Full support
10.1
| Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
captureStream | Chrome Full support 51 | Edge Full support ≤79 | Firefox Full support 43 | IE No support No | Opera Full support 36 | Safari Full support 11 | WebView Android Full support 51 | Chrome Android Full support 51 | Firefox Android Full support 43 | Opera Android Full support 36 | Safari iOS Full support 11 | Samsung Internet Android Full support 5.0 |
getContext | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 9 | Opera Full support 9 | Safari Full support 2 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
height | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 9 | Opera Full support 9 | Safari Full support 3 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
mozFetchAsStream | Chrome No support No | Edge No support No | Firefox No support 13 — 43 | IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
mozGetAsFile | Chrome No support No | Edge No support No | Firefox
No support
4 — 74
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android Full support 4 | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
mozOpaque | Chrome No support No | Edge No support No | Firefox Full support 3 | IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android Full support 4 | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
toBlob | Chrome Full support 50 | Edge
Full support
79
| Firefox Full support 19 | IE
Full support
10
| Opera Full support 37 | Safari Full support 11 | WebView Android Full support 50 | Chrome Android Full support 50 | Firefox Android Full support 4 | Opera Android Full support 37 | Safari iOS Full support 11 | Samsung Internet Android Full support 5.0 |
toDataURL | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 2 | IE Full support 9 | Opera Full support 9 | Safari Full support 4 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 3.2 | Samsung Internet Android Full support 1.0 |
transferControlToOffscreen | Chrome Full support 69 | Edge Full support 79 | Firefox
Full support
44
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android Full support 69 | Firefox Android
Full support
44
| Opera Android No support No | Safari iOS No support No | Samsung Internet Android Full support 10.0 |
webglcontextcreationerror event | Chrome Full support 9 | Edge Full support 12 | Firefox Full support 49 | IE Full support 11 | Opera Full support 12 | Safari Full support 5.1 | WebView Android Full support Yes | Chrome Android Full support 25 | Firefox Android Full support 49 | Opera Android Full support 12 | Safari iOS Full support 8 | Samsung Internet Android Full support 1.5 |
webglcontextlost event | Chrome Full support 9 | Edge Full support 12 | Firefox Full support 4 | IE Full support 11 | Opera Full support 12 | Safari Full support 5.1 | WebView Android Full support Yes | Chrome Android Full support 25 | Firefox Android Full support 4 | Opera Android Full support 12 | Safari iOS Full support 8 | Samsung Internet Android Full support 1.5 |
webglcontextrestored event | Chrome Full support 9 | Edge Full support 12 | Firefox Full support 4 | IE Full support 11 | Opera Full support 12 | Safari Full support 5.1 | WebView Android Full support Yes | Chrome Android Full support 25 | Firefox Android Full support 4 | Opera Android Full support 12 | Safari iOS Full support 8 | Samsung Internet Android Full support 1.5 |
width | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 9 | Opera Full support 9 | Safari Full support 3 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
Legend
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- Non-standard. Expect poor cross-browser support.
- Non-standard. Expect poor cross-browser support.
- Deprecated. Not for use in new websites.
- Deprecated. Not for use in new websites.
- See implementation notes.
- See implementation notes.
- User must explicitly enable this feature.
- User must explicitly enable this feature.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.
See also
- HTML element implementing this interface:
<canvas>