--- title: slug: Web/HTML/Element/canvas tags: - Canvas - HTML - HTML5 - Web translation_of: Web/HTML/Element/canvas --- <canvas>元素可被用来通过JavaScript(Canvas API 或 WebGL API)绘制图形及图形动画。 {{HTMLRef}} 属性 本元素支持 全局属性. {{htmlattrdef("height")}} 该元素占用空间的高度,以 CSS 像素(px)表示,默认为 150。 {{htmlattrdef("moz-opaque")}} {{non-standard_inline}} {{deprecated_inline}} 通过设置这个属性,来控制canvas元素是否半透明。如果你不想canvas元素被设置为半透明,使用这个元素将可以优化浏览器绘图性能。 {{htmlattrdef("width")}} 该元素占用空间的宽度,以 CSS 像素(px)表示,默认为 300。 注意事项 标签需要闭合 不同于 {{HTMLElement("img")}} 元素, {{HTMLElement ("canvas")}}元素需要有闭合标签 (</canvas>). 设置画布(canvas)的大小 直接在html标签中设置width和height属性或者使用JavaScript来指定画布尺寸,这将改变一个画布的水平像素和垂直像素数,就像定义了一张图片的大小一样。 可以使用CSS的width和height以在渲染期间缩放图像以适应样式大小,就像<img>元素一样。如果您发现<canvas>元素中展示的内容变形,您可以通过<canvas>自带的height和width属性进行相关设置,而不要使用CSS。 最大的画布尺寸 画布的最大的尺寸取决于浏览器,下表的结论来自别处 (e.g. Stack Overflow): 浏览器 最大高度 最大宽度 最大面积 Chrome 32,767 pixels 32,767 pixels 268,435,456 pixels (i.e., 16,384 x 16,384) Firefox 32,767 pixels 32,767 pixels 472,907,776 pixels (i.e., 22,528 x 20,992) Safari 32,767 pixels 32,767 pixels 268,435,456 pixels (i.e., 16,384 x 16,384) IE 8,192 pixels 8,192 pixels ? 示例 HTML <canvas id="canvas" width="300" height="300"> 抱歉,您的浏览器不支持canvas元素 (这些内容将会在不支持<canvas>元素的浏览器或是禁用了JavaScript的浏览器内渲染并展现) </canvas> JavaScript 使用{{domxref("HTMLCanvasElement.getContext()")}}获得一个绘图上下文并开始绘制 var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); ctx.fillStyle = 'green'; ctx.fillRect(10, 10, 100, 100); 结果 {{EmbedLiveSample('示例')}} 可访问性 <canvas> 元素本身只是一个位图,不提供任何绘制对象的信息。画布内容不像HTML那样具有语义并能暴露给可访问性工具。以下指南可以帮助您更方便地访问它。 MDN Hit regions and accessability Canvas accessibility use cases Canvas element accessibility issues HTML5 Canvas Accessibility in Firefox 13 – by Steve Faulkner Best practices for interactive canvas elements 规范 Specification Status Comment {{SpecName('HTML WHATWG', 'the-canvas-element.html#the-canvas- element', '<canvas>')}} {{Spec2('HTML WHATWG')}} {{SpecName('HTML5 W3C', 'the-canvas-element.html#the-canvas- element', '<canvas>')}} {{Spec2('HTML5 W3C')}} 初始定义 Browser compatibility The compatibility table in 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. {{Compat("html.elements.canvas")}} 参阅 MDN canvas portal Canvas tutorial Canvas cheat sheet Canvas-related demos Canvas introduction by Apple
<canvas>元素可被用来通过JavaScript(Canvas API 或 WebGL API)绘制图形及图形动画。
<canvas>
{{HTMLRef}}
本元素支持 全局属性.
不同于 {{HTMLElement("img")}} 元素, {{HTMLElement ("canvas")}}元素需要有闭合标签 (</canvas>).
</canvas>
直接在html标签中设置width和height属性或者使用JavaScript来指定画布尺寸,这将改变一个画布的水平像素和垂直像素数,就像定义了一张图片的大小一样。
可以使用CSS的width和height以在渲染期间缩放图像以适应样式大小,就像<img>元素一样。如果您发现<canvas>元素中展示的内容变形,您可以通过<canvas>自带的height和width属性进行相关设置,而不要使用CSS。
画布的最大的尺寸取决于浏览器,下表的结论来自别处 (e.g. Stack Overflow):
<canvas id="canvas" width="300" height="300"> 抱歉,您的浏览器不支持canvas元素 (这些内容将会在不支持<canvas>元素的浏览器或是禁用了JavaScript的浏览器内渲染并展现) </canvas>
使用{{domxref("HTMLCanvasElement.getContext()")}}获得一个绘图上下文并开始绘制
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); ctx.fillStyle = 'green'; ctx.fillRect(10, 10, 100, 100);
{{EmbedLiveSample('示例')}}
<canvas> 元素本身只是一个位图,不提供任何绘制对象的信息。画布内容不像HTML那样具有语义并能暴露给可访问性工具。以下指南可以帮助您更方便地访问它。
The compatibility table in 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.
{{Compat("html.elements.canvas")}}