Базовая поддержка Широко распространённая
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Используйте <canvas> с помощью API сценариев для холста или API WebGL для рисования графики и анимаций.
Атрибуты
Атрибуты этого элемента включают глобальные атрибуты.
height-
Высота координатного пространства в пикселях CSS. По умолчанию 150.
-
moz-opaqueНестандартный Устаревший -
Уведомляет холст о том, будет ли играть роль прозрачность. Если холст знает, что прозрачности нет, производительность рисования можно оптимизировать. Поддерживается только браузерами на основе Mozilla; используйте стандартизированный
canvas.getContext('2d', { alpha: false })вместо этого. width-
Ширина координатного пространства в пикселях CSS. По умолчанию 300.
Примечания по использованию
Альтернативный контент
Вы должны предоставить альтернативный контент внутри блока <canvas>. Этот контент будет отображаться в старых браузерах, которые не поддерживают холст, и в браузерах с отключенным JavaScript.
Закрывающий </canvas> тег
В отличие от элемента <img>, элемент <canvas> требует закрывающего тега (</canvas>).
Изменение размеров холста с помощью CSS по сравнению с HTML
Размер отображения холста можно изменить с помощью CSS, но в этом случае изображение масштабируется во время отрисовки, чтобы соответствовать стилизованному размеру, что может привести к искажению окончательного результата отрисовки графики.
Лучше указать размеры холста, задав атрибуты width и height непосредственно для элементов <canvas> — либо непосредственно в HTML, либо с помощью JavaScript.
Максимальный размер холста
Точный максимальный размер элемента <canvas> зависит от браузера и среды. Хотя в большинстве случаев максимальные размеры превышают 10 000 x 10 000 пикселей, устройства iOS ограничивают размер холста только 4096 x 4096 пикселями. См. пределы размера холста в разных браузерах и устройствах.
Примечание: Превышение максимальных размеров или области делает холст непригодным для использования — команды рисования не будут работать.
Использование внеэкранного холста
Холст можно отрисовать с помощью OffscreenCanvas API, где документ и холст развязаны. Преимущество заключается в том, что поток обработки потока задач может обрабатывать отрисовку холста, и основной поток вашего веб-приложения не блокируется операциями с холстом. Параллелизация работы обеспечит отзывчивость других элементов пользовательского интерфейса вашего веб-приложения даже при выполнении сложной графики на внеэкранном холсте. Более подробная информация доступна в документации OffscreenCanvas API.
Доступность
Альтернативный контент
Элемент <canvas> сам по себе представляет только растровое изображение и не содержит информации о нарисованных объектах. Содержимое холста недоступно для средств обеспечения доступности так, как это происходит с семантическим HTML. В целом, следует избегать использования холста на веб-сайте или в приложении, ориентированных на доступность. Следующие руководства могут помочь сделать его более доступным.
Примеры
HTML
Этот фрагмент кода добавляет элемент холста в ваш HTML документ. Предоставлен резервный текст в случае, если браузер не может прочитать или отобразить холст.
<canvas width="120" height="120"> An alternative text describing what your canvas displays. </canvas>
JavaScript
Затем в коде JavaScript вызовите HTMLCanvasElement.getContext(), чтобы получить контекст рисования и начать рисование на холсте:
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 для Android | Opera Android | Safari в IOS | Samsung Internet | WebView Android | |
canvas |
1 | 12 | 1.5["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не беззнаковыми целыми числами.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался так, как будто у него были значения по умолчанию.", "Перед Firefox 12, если JavaScript был отключен, элемент <canvas> отображался вместо отображения содержимого резервного варианта в соответствии со спецификацией. С тех пор, резервный вариант отображается вместо него."] |
9 | 2Хотя ранние версии браузера Apple Safari не требуют закрывающего тега, спецификация указывает, что он необходим, поэтому вы должны быть уверены, что включили его для наилучшей совместимости. Перед версией 2 Safari будет отображать содержимое резервного варианта наряду с самим холстом, если вы не используете CSS-хитрости для его маскировки. |
18 | 4["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не беззнаковыми целыми числами.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался так, как будто у него были значения по умолчанию.", "Перед Firefox 12, если JavaScript был отключен, элемент <canvas> отображался вместо отображения содержимого резервного варианта в соответствии со спецификацией. С тех пор, резервный вариант отображается вместо него."] |
10.1 | 1 | 1.0 | 37 |
height |
1 | 12 | 1.5["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не беззнаковыми целыми числами.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался так, как будто у него были значения по умолчанию.", "Перед Firefox 12, если JavaScript был отключен, элемент <canvas> отображался вместо отображения содержимого резервного варианта в соответствии со спецификацией. С тех пор, резервный вариант отображается вместо него."] |
9 | 2Хотя ранние версии браузера Apple Safari не требуют закрывающего тега, спецификация указывает, что он необходим, поэтому вы должны быть уверены, что включили его для наилучшей совместимости. Перед версией 2 Safari будет отображать содержимое резервного варианта наряду с самим холстом, если вы не используете CSS-хитрости для его маскировки. |
18 | 4["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не беззнаковыми целыми числами.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался так, как будто у него были значения по умолчанию.", "Перед Firefox 12, если 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Хотя ранние версии браузера Apple Safari не требуют закрывающего тега, спецификация указывает, что он необходим, поэтому вы должны быть уверены, что включили его для наилучшей совместимости. Перед версией 2 Safari будет отображать содержимое резервного варианта наряду с самим холстом, если вы не используете CSS-хитрости для его маскировки. |
18 | 4["Перед Firefox 5, ширина и высота холста были целыми числами со знаком, а не беззнаковыми целыми числами.", "Перед Firefox 6, элемент <canvas> с нулевой шириной или высотой отображался так, как будто у него были значения по умолчанию.", "Перед Firefox 12, если JavaScript был отключен, элемент <canvas> отображался вместо отображения содержимого резервного варианта в соответствии со спецификацией. С тех пор, резервный вариант отображается вместо него."] |
10.1 | 1 | 1.0 | 37 |
См. также
- API холста
- Учебник по холсту
- OffscreenCanvas
- Справочник по холсту (2009)
- Справочник по холсту (pdf) (2015)
- Руководство по холсту HTML Safari от Apple (2013)
-
CanvasRenderingContext2Dконтекст 2D отрисовки для элемента холста от Apple.com - WebGL API
<img>- SVG
- Использование HTML аудио и видео
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas