Перейти к содержимому

HTML-тег <canvas>

Тег <canvas> является одним из элементов HTML5. Он определяет область на веб-странице, в которой с помощью скриптов (обычно JavaScript) можно создавать различные объекты, изображения, анимации и фотомонтажи. Для отрисовки графики необходимо использовать скрипт, поскольку тег <canvas> служит лишь контейнером для графики.

При работе с canvas важно различать такие понятия, как элемент canvas и контекст элемента, которые часто путают. Этот элемент встроен в HTML (это узел DOM). Контекст canvas — это объект со своими свойствами и методами для отрисовки. Контекст может быть 2D или 3D. У элемента canvas может быть только один контекст.

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

По умолчанию элемент <canvas> имеет размер 300x150 пикселей.

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

Синтаксис

Тег <canvas> является парным. Содержимое записывается между открывающим (<canvas>) и закрывающим (</canvas>) тегами.

Пример использования HTML-тега <canvas>:

Пример HTML-тега canvas|W3Docs

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head> 
  <body>
    <canvas id="canvasExample">Your browser doesn’t support the HTML5 canvas element.</canvas>
    <script>
      var c=document.getElementById('canvasExample');
      var ctx=c.getContext('2d');
      ctx.fillStyle='#1c87c9';
      ctx.fillRect(10,50,80,80);
    </script>
  </body>
</html>

Результат

canvas exemple

Пример использования HTML-тега <canvas> для текста:

HTML-тег <canvas>|Пример canvas|W3Docs

html
<!DOCTYPE HTML>
<html>
  <head>
    <title>Title of the document</title>
  </head> 
  <body>
    <canvas id="canvasExample" width="400" height="200"></canvas>
    <script>
      var canvas = document.getElementById('canvasExample');
      var context = canvas.getContext('2d');
       context.font = '30pt Calibri';
       context.fillStyle = '#1c87c9';
       context.fillText('Canvas Example !', 50, 100);
    </script>
  </body>
</html>

Пример использования HTML-тега <canvas> для рисования линии:

Пример HTML-тега <canvas> для рисования линии:

html
<!DOCTYPE html>
<html>
  <body>
    <canvas  width="300" height="150" style="border:1px solid #cccccc;" id="canvasExample">
      Your browser does not support the HTML5 canvas tag.
    </canvas>
    <script>
      var c = document.getElementById("canvasExample");
      var ctx = c.getContext("2d");
      ctx.moveTo(0,0);
      ctx.lineTo(300,150);
      ctx.strokeStyle='#1c87c9';
      ctx.stroke();
    </script>
  </body>
</html>

Атрибуты

АтрибутЗначениеОписание
heightпикселиОпределяет высоту элемента в пикселях.
widthпикселиОпределяет ширину элемента в пикселях.

Тег <canvas> поддерживает Глобальные атрибуты и Атрибуты событий.

Практика

Каковы особенности и области применения HTML-тега <canvas>?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.