Spec-Zone.ru › HTML

<canvas> Элемент canvas для графики HTML

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает во многих устройствах и версиях браузеров. Она поддерживается браузерами с июля 2015 года.

  • Подробнее
  • Полная таблица совместимости
  • Оставить отзыв
>

Используйте <canvas> вместе с API Canvas для скриптов или API WebGL, чтобы рисовать графику и анимацию.

Атрибуты

Атрибуты этого элемента включают глобальные атрибуты.

height

Высота координатного пространства в пикселях CSS. По умолчанию равна 150.

moz-opaque

Сообщает canvas, будет ли использоваться прозрачность. Если canvas известно, что прозрачности нет, производительность отрисовки можно оптимизировать. Этот атрибут поддерживается только браузерами на основе Mozilla; вместо него используйте стандартизированный canvas.getContext('2d', { alpha: false }).

width

Ширина координатного пространства в пикселях CSS. По умолчанию равна 300.

Примечания по использованию

>

Альтернативное содержимое

Внутри блока <canvas> следует указать альтернативное содержимое. Оно будет отображаться в старых браузерах, не поддерживающих canvas, а также в браузерах с отключённым JavaScript.

Закрывающий тег </canvas>

В отличие от элемента <img>, элемент <canvas> требует закрывающего тега (</canvas>).

Изменение размера canvas с помощью CSS и HTML

Отображаемый размер canvas можно изменить с помощью CSS, но в этом случае изображение масштабируется при отрисовке в соответствии с заданным стилями размером, что может привести к искажению итоговой графики.

Лучше задать размеры canvas, установив атрибуты width и height непосредственно для элементов <canvas> — либо прямо в HTML, либо с помощью JavaScript.

Максимальный размер canvas

Точный максимальный размер элемента <canvas> зависит от браузера и среды. Хотя в большинстве случаев максимальные размеры превышают 10 000 x 10 000 пикселей, устройства iOS ограничивают размер canvas значением 4 096 x 4 096 пикселей. См. ограничения размера canvas в разных браузерах и устройствах.

Примечание: Превышение максимальных размеров или площади делает canvas непригодным для использования — команды рисования не будут работать.

Использование внеэкранного canvas

Canvas можно отрисовать с помощью API OffscreenCanvas, который отделяет документ от canvas. Преимущество в том, что отрисовкой canvas может заниматься поток worker, поэтому операции с canvas не блокируют основной поток веб-приложения. Благодаря распараллеливанию работы другие элементы интерфейса веб-приложения останутся отзывчивыми, даже если вы выполняете сложную графическую обработку во внеэкранном canvas. Дополнительные сведения см. в документации по API OffscreenCanvas.

Доступность

>

Альтернативное содержимое

Элемент <canvas> сам по себе является лишь растровым изображением и не предоставляет информации о нарисованных объектах. Содержимое canvas не доступно вспомогательным технологиям так же, как семантический HTML. В целом следует избегать использования canvas на доступных веб-сайтах и в приложениях. Сделать его более доступным помогут следующие руководства.

  • Примеры использования canvas с учётом доступности
  • Проблемы доступности элемента canvas
  • Рекомендации по использованию интерактивных элементов canvas

Примеры

>

HTML

Этот фрагмент кода добавляет элемент canvas в HTML-документ. Если браузер не может прочитать или отобразить canvas, будет показан резервный текст.

<canvas width="120" height="120">
  An alternative text describing what your canvas displays.
</canvas>

JavaScript

Затем в коде JavaScript вызовите HTMLCanvasElement.getContext(), чтобы получить контекст рисования и начать рисовать на canvas:

const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
ctx.fillStyle = "green";
// Add a rectangle at (10, 10) with size 100x100 pixels
ctx.fillRect(10, 10, 100, 100);

Результат

Техническая сводка

Категории содержимого потоковое содержимое, фразовое содержимое, встроенное содержимое, воспринимаемое содержимое.
Допустимое содержимое Прозрачное, но без потомков с интерактивным содержимым, кроме элементов <a>, элементов <button> и элементов <input>, атрибут type которых имеет значение checkbox, radio или button.
Опускание тегов Не допускается: обязательны и открывающий, и закрывающий теги.
Допустимые родительские элементы Любой элемент, допускающий фразовое содержимое.
Неявная роль ARIA Нет соответствующей роли
Допустимые роли ARIA Любые
Интерфейс DOM HTMLCanvasElement

Спецификации

Спецификация
HTML>
# the-canvas-element>

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android WebView on iOS
canvas 1 12
1.5["До Firefox 5 ширина и высота canvas были знаковыми целыми числами, а не беззнаковыми.", "До Firefox 6 элемент <canvas> с нулевой шириной или высотой отображался так, будто у него были размеры по умолчанию.", "До Firefox 12 при отключённом JavaScript отображался элемент <canvas>, а не резервное содержимое, как предписывает спецификация. Начиная с этой версии отображается резервное содержимое."]
9
2Хотя ранние версии браузера Safari от Apple не требуют закрывающего тега, спецификация указывает, что он обязателен, поэтому для максимальной совместимости обязательно включайте его. До версии 2 Safari отображает резервное содержимое вместе с самим canvas, если не использовать приёмы CSS, чтобы скрыть его.
18
4["До Firefox for Android 5 ширина и высота canvas были знаковыми целыми числами, а не беззнаковыми.", "До Firefox for Android 6 элемент <canvas> с нулевой шириной или высотой отображался так, будто у него были размеры по умолчанию.", "До Firefox for Android 14 при отключённом JavaScript отображался элемент <canvas>, а не резервное содержимое, как предписывает спецификация. Начиная с этой версии отображается резервное содержимое."]
10.1 1 1.0 37 1
height 1 12
1.5["До Firefox 5 ширина и высота canvas были знаковыми целыми числами, а не беззнаковыми.", "До Firefox 6 элемент <canvas> с нулевой шириной или высотой отображался так, будто у него были размеры по умолчанию.", "До Firefox 12 при отключённом JavaScript отображался элемент <canvas>, а не резервное содержимое, как предписывает спецификация. Начиная с этой версии отображается резервное содержимое."]
9
2Хотя ранние версии браузера Safari от Apple не требуют закрывающего тега, спецификация указывает, что он обязателен, поэтому для максимальной совместимости обязательно включайте его. До версии 2 Safari отображает резервное содержимое вместе с самим canvas, если не использовать приёмы CSS, чтобы скрыть его.
18
4["До Firefox for Android 5 ширина и высота canvas были знаковыми целыми числами, а не беззнаковыми.", "До Firefox for Android 6 элемент <canvas> с нулевой шириной или высотой отображался так, будто у него были размеры по умолчанию.", "До Firefox for Android 14 при отключённом JavaScript отображался элемент <canvas>, а не резервное содержимое, как предписывает спецификация. Начиная с этой версии отображается резервное содержимое."]
10.1 1 1.0 37 1
moz-opaque Нет Нет 3.5 Нет Нет Нет 4 Нет Нет Нет Нет Нет
width 1 12
1.5["До Firefox 5 ширина и высота canvas были знаковыми целыми числами, а не беззнаковыми.", "До Firefox 6 элемент <canvas> с нулевой шириной или высотой отображался так, будто у него были размеры по умолчанию.", "До Firefox 12 при отключённом JavaScript отображался элемент <canvas>, а не резервное содержимое, как предписывает спецификация. Начиная с этой версии отображается резервное содержимое."]
9
2Хотя ранние версии браузера Safari от Apple не требуют закрывающего тега, спецификация указывает, что он обязателен, поэтому для максимальной совместимости обязательно включайте его. До версии 2 Safari отображает резервное содержимое вместе с самим canvas, если не использовать приёмы CSS, чтобы скрыть его.
18
4["До Firefox for Android 5 ширина и высота canvas были знаковыми целыми числами, а не беззнаковыми.", "До Firefox for Android 6 элемент <canvas> с нулевой шириной или высотой отображался так, будто у него были размеры по умолчанию.", "До Firefox for Android 14 при отключённом JavaScript отображался элемент <canvas>, а не резервное содержимое, как предписывает спецификация. Начиная с этой версии отображается резервное содержимое."]
10.1 1 1.0 37 1

См. также

  • API Canvas
  • Руководство по Canvas
  • OffscreenCanvas
  • Шпаргалка по Canvas (2009)
  • Шпаргалка по Canvas (PDF) (2015)
  • Руководство по HTML canvas для Safari от Apple (2013)
  • CanvasRenderingContext2D Контекст двумерного рисования для элемента canvas от Apple.com
  • WebGL API
  • <img>
  • SVG
  • Видео и аудио в HTML

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/canvas

Spec-Zone.ru

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