Spec-Zone.ru › Web APIs

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);

Результат

Справочник

  • HTMLCanvasElement
  • CanvasRenderingContext2D
  • CanvasGradient
  • CanvasPattern
  • ImageBitmap
  • ImageData
  • TextMetrics
  • OffscreenCanvas
  • 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

См. также

  • WebGL

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API