Canvas — это элемент, добавленный в HTML5, который позволяет рисовать на странице в реальном времени. Он похож на <div>
тем, что это блочный элемент, используемый для структурирования информации на веб-странице, но гораздо сложнее в том, что вы можете с ним делать. Чтобы создать элемент холста, вы просто вставляете <canvas></canvas>
в HTML, как и любой другой элемент. Вы должны инициализировать его высотой и шириной, но также иметь возможность добавить любые другие атрибуты HTML, такие как граница, через атрибут style
. Тогда инициализация элемента canvas может выглядеть следующим образом:
Это все, что вам нужно написать в HTML или CSS. Все остальное делается на JavaScript. Сейчас полотно не очень интересное. Это то же самое, что и пустой div с рамкой вокруг него. Что отлично от холста, так это то, что теперь он позволяет вам использовать функции JavaScript, специфичные для элементов холста. Чтобы настроить их, вы должны сначала сохранить холст в переменной JavaScript, например:
var canvas = document.getElementById("myCanvas")
Затем вы устанавливаете «контекст» для холста:
var ctx = canvas.getContext("2d")
getContext здесь вызывается для элемента холста (хранящегося как переменная) и принимает аргумент типа контекста. Тип контекста может быть:
- «2d»: создает контекст 2D-рендеринга.
- «webGL»: создайте контекст 3D-рендеринга.
- «webGL2»: создать контекст 3D-рендеринга с добавленными методами («экспериментальный» контекст)
- «bitmaprenderer»: заменяет содержимое холста на ImageBitmap.
Создав контекст, теперь вы можете использовать методы, назначенные ctx
, для рисования на холсте с помощью JavaScript. Для целей этой презентации я буду использовать контекст «2d». Одна из самых простых вещей, которые вы можете сделать с этим новым контекстом, — это провести линию. Для этого вы сначала устанавливаете «начальную точку» в определенную координату:
ctx.moveTo(0,0)
Затем вы переходите от этой начальной точки к конечной точке.
ctx.lineTo(50,50)
Наконец, вы «рисуете» линию через ctx.stroke()
Контекст 2d позволяет использовать множество других методов, которые можно найти здесь. Некоторые из них, например, включают в себя рисование прямоугольников и кругов и их заливку с использованием градиентов. Я поэкспериментировал с некоторыми из них здесь http://codepen.io/depaolif/pen/pNdKOZ.
Что делает холст особенно интересным, так это то, что, поскольку все рисование выполняется с помощью JavaScript, вы можете комбинировать методы рисования холста с обработчиками событий, что приводит к высокоинтерактивным элементам HTML, как в этой кодовой ручке: http://codepen.io/tholman/ полный/lDLhk/.
Вы также можете добавить элемент случайности во все, что вы разрабатываете, чтобы каждый раз, когда функция запускается, она создавала что-то новое. Вот пример того, что я создал, используя пошаговое руководство по проектированию фракталов: http://codepen.io/depaolif/full/ZeLLjv/.
Источники:
http://thecodeplayer.com/walkthrough/create-binary-trees-using-javascript-and-html5-canvas
https://www.w3schools.com/html/ html5_canvas.asp
Первоначально опубликовано на сайте frederico-de-paoli.com 23 марта 2017 г.