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="https://developer.mozilla.org/en-US/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="https://developer.mozilla.org/en-US/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="https://developer.mozilla.org/en-US/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="https://developer.mozilla.org/en-US/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="https://developer.mozilla.org/en-US/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
- Is a positive
integer
reflecting theheight
HTML attribute of the<canvas>
element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of150
is used. 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. HTMLCanvasElement.width
- Is a positive
integer
reflecting thewidth
HTML attribute of the<canvas>
element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of300
is used. HTMLCanvasElement.mozPrintCallback
- Is a
function
that is Initially null, Web content can set this to a JavaScript function that will be called if the page is printed. This function can then redraw the canvas at a higher resolution that is suitable for 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"experimental-webgl"
(or"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. 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
.
Specifications
Specification | Status | Comment |
---|---|---|
Media Capture from DOM Elements The definition of 'HTMLCanvasElement' in that specification. |
Editor's Draft | Adds the method captureStream() . |
WHATWG HTML Living Standard The definition of 'HTMLCanvasElement' in that specification. |
Living Standard | The method getContext() now returns a RenderingContext rather than an opaque object .The methods probablySupportsContext() , setContext() and transferControlToProxy() have been added. |
HTML 5.1 The definition of 'HTMLCanvasElement' in that specification. |
Recommendation | |
HTML5 The definition of 'HTMLCanvasElement' in that specification. |
Recommendation | Initial definition. |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support (2D context) |
4.0 | (Yes) | 3.6 (1.9.2) | 9.0 | 9.0 [1] | 3.1 |
toBlob() |
50 | No support | 19 (19) [2] | ? | ? | No support (bug 71270) |
probablySupportsContext() ,setContext() ,transferControlToProxy() |
No support | ? | No support | No support | No support | No support |
mozGetAsFile() |
No support | No support | 4.0 (2) | No support | No support | No support |
captureStream() |
No support | No support | 41 (41) | No support | No support | No support |
transferControlToOffscreen() |
No support | No support | 44 (44) [3] | No support | No support | No support |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support (2D context) |
2.1 | (Yes) | (Yes) | (Yes) | ? | 10.0 [1] | 3.2 |
webgl context |
? | ? | ? | (Yes) as experimental-webgl |
? | ? | ? |
toBlob() |
No support (bug 67587) | 50 | No support | 18.0 (18) [2] | ? | ? | No support (bug 71270) |
probablySupportsContext() ,setContext() ,transferControlToProxy() |
No support | No support | ? | No support | No support | No support | No support |
mozGetAsFile() |
No support | No support | No support | 4.0 (2) | No support | No support | No support |
captureStream() |
No support | No support | No support | 41.0 (41) | No support | No support | No support |
transferControlToOffscreen() |
No support | No support | No support | 44.0 (44) [3] | No support | No support | No support |
[1] Opera Mini 5.0 and later has partial support.
[2] Support for the third parameter, has been added in Gecko 25 only: when used with the "image/jpeg"
type, this argument specifies the image quality.
[3] This feature is behind a feature preference setting. In about:config, set gfx.offscreencanvas.enabled
to true
.
See also
- HTML element implementing this interface:
<canvas>
.
Document Tags and Contributors
Tags:
Contributors to this page:
Sebastianz,
trusktr,
arronei,
erikadoyle,
slimsag,
Jonathan_Watt,
Sephr,
fscholz,
teoli,
danielfriesen,
Nexii,
prometheansacrifice,
anandu,
Noitidart,
Naesten,
kohei.yoshino,
kscarfone,
trevorh,
igall,
ethertank,
Sheppy,
JesseNaranjo,
alex35,
evilpie,
ttaubert,
ebidel,
darktrojan,
cgack,
jswisher,
tw2113,
fusionchess,
myakura,
ilmarihei,
mako52,
Nickolay,
Brettz9
Last updated by:
Sebastianz,