API холста
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
API холста предоставляет средства для рисования графики с помощью JavaScript и элемента HTML <canvas>. Среди прочего, он может использоваться для анимации, графики игр, визуализации данных, обработки фотографий и обработки видео в реальном времени.
API холста в основном фокусируется на 2D-графике. API WebGL, который также использует элемент <canvas>, рисует ускоренную графику 2D и 3D.
Базовый пример
В этом простом примере рисуется зелёный прямоугольник на холсте.
HTML
<canvas id="canvas"></canvas>
JavaScript
Метод Document.getElementById() получает ссылку на элемент HTML <canvas>. Далее, метод HTMLCanvasElement.getContext() получает контекст этого элемента — область, на которую будет наноситься отрисовка.
Фактическая отрисовка выполняется с помощью интерфейса CanvasRenderingContext2D. Свойство fillStyle делает прямоугольник зелёным. Метод fillRect() размещает его верхний левый угол в точке (10, 10) и задаёт размеры 150 пикселей в ширину и 100 пикселей в высоту.
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.fillStyle = "green";
ctx.fillRect(10, 10, 150, 100);
Результат
Справочник
HTMLCanvasElementCanvasRenderingContext2DCanvasGradientCanvasPatternImageBitmapImageDataTextMetricsOffscreenCanvas-
Path2DЭкспериментальная -
ImageBitmapRenderingContextЭкспериментальная
Примечание: Интерфейсы, относящиеся к WebGLRenderingContext, находятся в разделе WebGL.
Примечание: OffscreenCanvas также доступен в веб-воркерах.
CanvasCaptureMediaStreamTrack — это связанный интерфейс.
Руководства и учебные пособия
- Учебное пособие по холсту
-
Подробное руководство, охватывающее как базовое использование API холста, так и его расширенные возможности.
- HTML5 Canvas Deep Dive
-
Практическое руководство для изучения API холста и WebGL.
- Справочник по холсту
-
Удобный справочник по API холста.
- Обработка видео с помощью холста
-
Сочетание
<video>и<canvas>для обработки данных видео в реальном времени.
Библиотеки
API холста очень мощный, но не всегда простой в использовании. Перечисленные ниже библиотеки могут ускорить и упростить создание проектов на основе холста.
- EaselJS — это открытая библиотека холста, которая упрощает создание игр, генерируемого искусства и других графически насыщенных опытов.
- Fabric.js — это открытая библиотека холста с возможностью парсинга SVG.
- heatmap.js — это открытая библиотека для создания карт данных на основе холста.
- JavaScript InfoVis Toolkit создает интерактивную визуализацию данных.
- Konva.js — это 2D-библиотека холста для настольных и мобильных приложений.
- p5.js имеет полный набор функций рисования на холсте для художников, дизайнеров, педагогов и новичков.
- Paper.js — это открытый векторный графический фреймворк, работающий поверх HTML Canvas.
- Phaser — это быстрый, бесплатный и увлекательный открытый фреймворк для игр на холсте и WebGL.
- Pts.js — это библиотека для креативного программирования и визуализации на холсте и в SVG.
- Rekapi — это API анимации для ключевых кадров на холсте.
- Scrawl-canvas — это открытая JavaScript-библиотека для создания и управления 2D-элементами холста.
- Фреймворк ZIM предоставляет удобства, компоненты и элементы управления для кодирования творчества на холсте — включает доступность и сотни красочных учебных пособий.
- Sprig — это простая в использовании открытая библиотека для разработки игр на основе плиток, использующая холст.
Примечание: См. API WebGL для библиотек 2D и 3D, использующих WebGL.
Спецификации
| Спецификация |
|---|
| HTML # the-canvas-element |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
Canvas_API |
1 | 12 | 1.5["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не без знака.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался как если бы у него были значения по умолчанию.", "Перед Firefox 12, если JavaScript был отключён, элемент <canvas> отображался вместо отображения резервного контента в соответствии со спецификацией. С тех пор отображается резервный контент."] |
9 | 2Хотя ранние версии браузера Safari от Apple не требуют закрывающего тега, спецификация указывает на необходимость его включения для наибольшей совместимости. Перед версией 2 Safari будет отображать содержимое резервного контента вместе с самим холстом, если вы не используете CSS-трюки для его маскировки. |
18 | 4["Перед Firefox for Android 5, ширина и высота холста были целыми числами со знаком, а не без знака.", "Перед Firefox for Android 6, элемент <canvas> с нулевой шириной или высотой отображался как если бы у него были значения по умолчанию.", "Перед Firefox for Android 14, если JavaScript был отключён, элемент <canvas> отображался вместо отображения резервного контента в соответствии со спецификацией. С тех пор отображается резервный контент."] |
10.1 | 1 | 1.0 | 37 |
height |
1 | 12 | 1.5["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не без знака.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался как если бы у него были значения по умолчанию.", "Перед Firefox 12, если JavaScript был отключён, элемент <canvas> отображался вместо отображения резервного контента в соответствии со спецификацией. С тех пор отображается резервный контент."] |
9 | 2Хотя ранние версии браузера Safari от Apple не требуют закрывающего тега, спецификация указывает на необходимость его включения для наибольшей совместимости. Перед версией 2 Safari будет отображать содержимое резервного контента вместе с самим холстом, если вы не используете CSS-трюки для его маскировки. |
18 | 4["Перед Firefox for Android 5, ширина и высота холста были целыми числами со знаком, а не без знака.", "Перед Firefox for Android 6, элемент <canvas> с нулевой шириной или высотой отображался как если бы у него были значения по умолчанию.", "Перед Firefox for Android 14, если JavaScript был отключён, элемент <canvas> отображался вместо отображения резервного контента в соответствии со спецификацией. С тех пор отображается резервный контент."] |
10.1 | 1 | 1.0 | 37 |
moz-opaque |
Нет | Нет | 3.5 | Нет | Нет | Нет | 4 | Нет | Нет | Нет | Нет |
width |
1 | 12 | 1.5["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не без знака.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался как если бы у него были значения по умолчанию.", "Перед Firefox 12, если JavaScript был отключён, элемент <canvas> отображался вместо отображения резервного контента в соответствии со спецификацией. С тех пор отображается резервный контент."] |
9 | 2Хотя ранние версии браузера Safari от Apple не требуют закрывающего тега, спецификация указывает на необходимость его включения для наибольшей совместимости. Перед версией 2 Safari будет отображать содержимое резервного контента вместе с самим холстом, если вы не используете CSS-трюки для его маскировки. |
18 | 4["Перед Firefox for Android 5, ширина и высота холста были целыми числами со знаком, а не без знака.", "Перед Firefox for Android 6, элемент <canvas> с нулевой шириной или высотой отображался как если бы у него были значения по умолчанию.", "Перед Firefox for Android 14, если JavaScript был отключён, элемент <canvas> отображался вместо отображения резервного контента в соответствии со спецификацией. С тех пор отображается резервный контент."] |
10.1 | 1 | 1.0 | 37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API