Учим HTML5 Canvas за 30 минут

Учим HTML5 Canvas за 30 минут
HTML и CSS 0    5135 0

Сегодня будет легкий, но классный урок. Мы познакомимся с HTML 5 Canvas.


С помощью Canvas Вы сможете создавать интересные эффекты на странице, разрабатывать игры и полезные графические инструменты. При этом всем работа с HTML 5 Canvas осуществляется посредством языка программирования JavaScript, но там все очень просто. Его поддержка радует во всех смыслах, так как Canvas поддерживается практически везде, даже на старых версиях Internet Explorer.

Соответственно мы разберем работу с самим тегом Canvas, поговорим о его особенностях и нарисуем простейшие графические примитивы, такие как квадрат, круг, треугольник. Затем с полученными знаниями разработаем простенькую программу, позволяющую рисовать, а затем на автомате воспроизводить рисунок. Такая штука раньше была очень популярна на Facebook.

Поехали!

Для начала создадим обычную структуру HTML документа и разместим тег Canvas. Напишем между тегами текст, который будет отображаться, если браузер не поддерживает Canvas. Также имеет смысл дать идентификатор id=”canvas”, чтобы определить его из множества других, если таковые будут. Пропишем нашему body нулевое значение margin, чтобы не было отступов.

HTML Canvas

Теперь есть смысл начинать писать наш код.

Первое, что нужно сделать в скрипте это подгрузить сам Canvas.

canv = document.getElementById('canvas');

Далее создадим переменную, которая вообще-то называется context, но стандартно пишут ctx. Она будет хранить в себе контекст этого загруженного canvas-a. Загружается он легко, просто обращаетесь к этой переменной canv и вызываете метод getContext. Первым аргументом указываете, какой хотите контекст. Их стандартно 4, но чаще всего используется двумерный контекст, то есть 2d.

ctx = canv.getContext('2d');

Пропишем высоту и ширину Canvas так, чтобы он отображался на всю страницу. По умолчанию его параметры 300x150px. Чтобы не появлялись полосы прокрутки необходимо прописать тегу Canvas значение display: block.

canv.width = window.innerWidth;
canv.height = window.innerHeight;

Приступим к рисованию прямоугольника!

Первое, что мы сделаем - нарисуем прямоугольник. Для этого нужно обратиться к нашему контекту, то есть к переменной ctx и указать свойство fillStyle, хотя можно этого не делать и тогда цвет у прямоугольника будет черный.

ctx.fillStyle = 'magenta';

Далее вызываем метод fillRect, который отвечает за то, чтобы нарисовать непосредственно сам квадрат. Он принимает 4 аргумента: позиции по оси X и Y, на который будет начинаться наш будущий прямоугольник.

ctx.fillRect(50,50,300,200);

После того как Вы сохраните документ и обновите в браузере страницу, то увидите долгожданный прямоугольник.

прямоугольник на Canvas

При этом мы можем его очень просто анимировать. Для этого создаем простую переменную, например, x, которая будет хранить расположение прямоугольника по оси X.

var x = 50;
ctx.fillRect(x,50,300,200);

Теперь создаем простейший таймер, который каждых 10 миллисекунд будет перерисовывать этот прямоугольник и увеличивать его позицию по оси X. В начале каждого цикла (таймера, повторения) закрашиваем весь холст белым цветом.

setInterval(function(){
	ctx.fillStyle = 'white';
	ctx.fillRect(0,0,canv.width,canv.height);

	ctx.fillStyle = 'magenta';
	ctx.fillRect(x++,50,300,200);
},10);

Получаем вот такой код и анимацию

var 
		canv = document.getElementById('canvas');
		ctx = canv.getContext('2d');

		canv.width = window.innerWidth;
		canv.height = window.innerHeight;

		var x = 50;
		ctx.fillStyle = 'magenta';
		ctx.fillRect(x,50,300,200);

		setInterval(function(){
			ctx.fillStyle = 'white';
			ctx.fillRect(0,0,canv.width,canv.height);

			ctx.fillStyle = 'magenta';
			ctx.fillRect(x++,50,300,200);
		},10);

анимированный прямоугольник на Canvas

Вообще-то делать анимацию в Canvas через setInterval нет особого смысла, это делается через requestAnimationFrame.


Как нарисовать прямоугольник, но не заполнять его? Чтобы у него были только border-ы. Для этого есть метод strokeRect, который принимает точно те же аргументы, что и fillRect

var x = 50;
	ctx.fillStyle = 'magenta';
	ctx.strokeRect(x,50,300,200);

На выходе Вы получается вот это:

пустой прямоугольник на Canvas

Можно обратить внимание, что цвет border-a прямоугольника не magenta. Так происходит, потому что он вызывается не через fill, а через stroke.

Можно изменить цвет обводки прямоугольника, а заодно и его ширину следующим образом:

var x = 50;
	ctx.fillStyle = 'magenta';
	ctx.strokeStyle = 'red';

	ctx.lineWidth = 10;
	ctx.strokeRect(x,50,300,200);
толстая обводка на Canvas

Учимся делать круг!

Круг на Canvas делается также очень просто. Для этого есть метод arc. Он принимает 6 параметров: 1 - позиция по оси x, 2 - позиция по оси y, 3 - радиус круга, 4 - начало угла (start angle), 5 - конец угла (end angle), 6 – рисовать круг по часовой стрелке или против. Последний параметр не обязательный. Start angle начинается справа, так как он задается в медианах и когда Вы указываете end angle, то указываете как далеко он пойдет.

end angle и Start angle в Canvas
ctx.fillStyle = 'magenta';

	ctx.arc(canv.width / 2, canv.height / 2, 100, 0, Math.PI);
	ctx.fill(); //нужен для того, чтобы Вы заполнили то, что разметили в arc

Получем ровный полукруг

полукруг в Canvas

Поделиться с друзьями


Похожие статьи:

Подборка слайдеров для сайта на чистом CSS
Кнопка для сайта в стиле минимализм
Градиент для кнопок на сайте
3D текст с мультяшным эффектом на CSS
CSS анимация в стиле рентгена
Верстка блоков со стрелочками
Анимированный фон с плавающими облаками
Красивое оформление 404 страницы
Вертикальное hover hide меню для сайта на HTML и CSS
Стилизация Input File

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Вы можете авторизоваться на сайте через:
    YandexVkontakte
    Требуется программист