Заинтересованы в CSS анимации? Ознакомьтесь с разделом Создание анимации с помощью CSS , полный курс по CSS-переходам и анимации ключевых кадров от опытного веб-разработчика Донована Хатчинсона, доступный для членов SitePoint. Для примера анимации холста HTML5 смотрите Иллюстрации с HTML5 Canvas ниже, это одно видео из нашего мини-курса « Начните анимацию с помощью HTML5 Canvas» .
Press shift question mark to access a list of keyboard shortcuts
Одним из наиболее важных инструментов в наборе инструментов художника является их холст. Это дает им свободу выражать любые чувства, впечатления, идеи и т. Д. В практически неограниченных вариациях и сочетаниях. И эта свобода может быть ограничена только двумя вещами — их уровнем мастерства и их воображением.
Ситуация в мире веб-разработки похожа. Благодаря постоянному прогрессу HTML5 и его мощным спецификациям, веб-разработчики получили возможность делать вещи, которые были невозможны в прошлом. Рисование графики и создание анимации прямо в браузере теперь полностью возможно благодаря технологии под названием HTML5 Canvas .
Что такое HTML5 Canvas?
Элемент canvas — это элемент, определенный в HTML-коде с использованием атрибутов width
height
Однако настоящая сила элемента canvas достигается за счет использования HTML5 Canvas API. Этот API используется для написания JavaScript, который может получить доступ к области холста через полный набор функций рисования, что позволяет динамически генерировать графику.
Что такого замечательного в HTML5 Canvas?
Вот несколько причин, по которым вы можете захотеть научиться использовать функцию Canvas в HTML5:
- Интерактивность. Холст полностью интерактивный. Он может реагировать на действия пользователя, прослушивая события клавиатуры, мыши или касания. Таким образом, разработчик не ограничен только статической графикой и изображениями.
- Анимация. Каждый нарисованный на холсте объект может быть анимирован. Это позволяет создавать все уровни анимации, от простых прыгающих шаров до сложной прямой и обратной кинематики .
- Гибкость. Разработчики могут создавать практически все, используя canvas. Он может отображать линии, фигуры, текст, изображения и т. Д. — с анимацией или без нее. Кроме того, добавление видео и / или аудио в приложение Canvas также возможно.
- Поддержка браузера / платформы. HTML5 Canvas поддерживается всеми основными браузерами и доступен на многих устройствах, включая настольные ПК, планшеты и смартфоны.
- Популярность. Популярность холста быстро и неуклонно растет, поэтому нет недостатка в доступных ресурсах.
- Это веб-стандарт. В отличие от Flash и Silverlight, Canvas — это открытая технология, являющаяся частью HTML5. И хотя не все его функции реализованы во всех браузерах, разработчики могут быть уверены, что canvas будет существовать бесконечно долго.
- Развивайся один раз, беги везде. HTML5 Canvas предлагает отличную переносимость. После создания, в отличие от Flash и Silverlight, приложение Canvas может работать практически где угодно — от самых больших компьютеров до самых маленьких мобильных устройств.
- Бесплатные и доступные инструменты разработки. Основные инструменты для создания приложений HTML5 canvas — это просто браузер и хороший редактор кода. Плюс, есть много отличных и бесплатных библиотек и инструментов, которые помогут разработчикам в продвинутой разработке холста.
Какие приложения вы можете создать с помощью HTML5 Canvas?
ОК, холст отличный. Но для чего именно это можно использовать? Посмотрим.
- Gaming. Набор функций HTML5 Canvas является идеальным кандидатом для создания всевозможных 2D и 3D игр.
- Реклама. HTML5 Canvas — отличная замена для баннеров и рекламы на основе Flash. В нем есть все необходимые функции для привлечения внимания покупателей.
- Представление данных. HTML5 может собирать данные из глобальных источников данных и использовать их для создания визуально привлекательных и интерактивных графиков и диаграмм с элементом canvas.
- Образование и Обучение. HTML5 canvas можно использовать для эффективного и привлекательного обучения, комбинируя текст, изображения, видео и аудио.
- Искусство и Украшение. С небольшим воображением и широким разнообразием цветов, градиентов, узоров, прозрачности, теней и функций отсечения можно рисовать все виды художественной и декоративной графики.
Теперь, когда мы знаем, почему мы должны изучать canvas, давайте посмотрим на основы HTML5 Canvas и как начать его использовать.
Контексты рендеринга холста
Каждый элемент холста HTML5 должен иметь контекст . Контекст определяет, какой HTML5 Canvas API вы будете использовать. 2D-контекст используется для рисования 2D-графики и управления растровыми изображениями. 3D-контекст используется для создания и манипулирования 3D-графикой. Последний фактически называется WebGL и основан на OpenGL ES .
Начиная
Для начала работы с canvas все, что вам нужно — это редактор кода и браузер с поддержкой HTML5 canvas. Я использую Sublime Text и Google Chrome, но вы можете использовать все, что захотите.
Наш HTML для начала будет выглядеть так:
<canvas id="exampleCanvas" width="500" height="300">
<!-- OPTION 1: leave a message here if browser doesn't support canvas -->
<p>Your browser doesn’t currently support HTML5 Canvas.
Please check caniuse.com/#feat=canvas for information on
browser support for canvas.</p>
<!-- OPTION 2: put fallback content (text, image, Flash, etc.)
if the browser doesn't support canvas -->
</canvas>
И вот наш JavaScript, который мы можем включить в нижней части нашей HTML-страницы:
var canvas = document.getElementById('exampleCanvas'),
context = canvas.getContext('2d');
// code examples will continue here...
По умолчанию браузер создает элементы canvas шириной 300 пикселей и высотой 150 пикселей, даже если они не указаны в HTML. Вы можете изменить размер, указав width
height
Также обратите внимание, что мы дали холсту атрибут id
И, наконец, если вы хотите, вы можете использовать CSS, чтобы добавить рамку, чтобы сделать холст видимым с помощью тонкой рамки. Это не обязательно, оно используется в качестве наглядного пособия для нас, чтобы увидеть границу элемента canvas.
Обратите внимание, что между открывающим и закрывающим тегами <canvas>
Это может быть почти любой тип контента, который поддерживает старый браузер.
JavaScript начинается с двух строк. В первой строке мы создаем переменную, которая кэширует наш элемент canvas через его идентификатор. Вторая строка создает переменную ( context
getContext()
Мы будем использовать переменную context
С готовым холстом мы можем начать экспериментировать с Canvas API. Но перед этим давайте проясним еще несколько аспектов функции canvas.
HTML5 Размер элемента холста и размер поверхности рисования
Помимо атрибутов width
height
Однако определение размера элемента canvas с помощью CSS — это не то же самое, что установка атрибутов width
height
Это потому, что холст на самом деле имеет два размера: размер самого элемента и размер поверхности рисования элемента.
Когда вы устанавливаете атрибуты width
height
однако, когда вы используете CSS для определения размера элемента canvas, вы устанавливаете только размер элемента, а не поверхность рисования. Когда размер элемента canvas не соответствует размеру его поверхности рисования, браузер масштабирует поверхность рисования, чтобы соответствовать элементу.
По этой причине рекомендуется использовать атрибуты width
height
Понимание системы координат холста
В двумерном пространстве позиции указываются с использованием координат X и Y. Ось X простирается горизонтально, а ось Y простирается вертикально. Центр имеет положение x = 0
y = 0
(0, 0)
Этот метод позиционирования объектов, используемый в математике, известен как декартова система координат .
Однако система координат Canvas размещает начало координат в верхнем левом углу холста, причем координаты X увеличиваются вправо, а координаты Y увеличиваются внизу холста. Таким образом, в отличие от стандартного декартова координатного пространства, пространство Canvas не имеет видимых отрицательных точек. Использование отрицательных координат не приведет к сбою приложения, но объекты, расположенные с использованием отрицательных координат, не появятся на странице.
Основные Примеры Холста
Как уже упоминалось, HTML5 Canvas позволяет создавать различные типы объектов, в том числе линии, кривые, контуры, фигуры, текст и т. Д. В следующих примерах вы можете увидеть, как на самом деле нарисованы некоторые из этих объектов. Я не буду вдаваться в подробности о Canvas API; это всего лишь некоторые из них, которые помогут вам понять, как работает canvas.
Рисование линий
Чтобы нарисовать линию, мы используем четыре метода API Canvas. Мы начнем с beginPath()
Далее мы используем метод moveTo(x, y)
Затем lineTo(x, y)
На этом этапе линия будет проведена, но она все еще невидима. Чтобы сделать его видимым, мы используем метод stroke()
context.beginPath();
context.moveTo(50, 50);
context.lineTo(250, 150);
context.stroke();
Рисовать прямоугольник
Чтобы нарисовать прямоугольник, мы можем использовать метод fillRect(x, y, width, height)
fillStyle
context.fillStyle = 'yellow';
context.fillRect(50, 50, 200, 100);
Обратите внимание, что прямоугольник расположен рядом с верхним левым углом.
Рисовать текст
Чтобы нарисовать текст на холсте, мы можем использовать fillText(string, x, y)
font
context.font = 'italic 40pt Calibri, sans-serif';
context.fillText('Hello World!', 50, 50);
Вы должны знать, что хотя простое рисование с помощью HTML5 Canvas API легко, создание сложных форм и анимаций требует определенных знаний по математике и физике. Одной из лучших книг на эту тему является Foundation HTML5 Animation с JavaScript . Эта книга — отличный ресурс для обучения движению вещей, от простых анимаций до сложных.
Где узнать больше?
Если вы хотите узнать, вот несколько ресурсов:
- Canvas tutorial — отличный учебник по MDN, полный примеров, иллюстраций и подробных объяснений.
- HTML5 Canvas Element Guide — Учебник для начинающих от Six Revisions.
- HTML5 Canvas tutorials — полный набор учебников, созданных Эриком Роуэллом, создателем библиотеки холстов KineticJS. Все примеры являются интерактивными; Вы можете играть с ними и сразу увидеть результат.
Ускорьте разработку холста
Работа с «сырым» HTML5 Canvas API может быть утомительной работой. Вот почему, если вы научитесь хорошо, переходите на хорошую библиотеку Canvas, которая может ускорить и упростить разработку холста.
Вот несколько популярных вариантов:
Другой способ ускорить разработку HTML5 Canvas — использовать плагин Ai-> Canvas для Adobe Illustrator . Вы можете найти обзор плагина в этой статье на SitePoint .
Вывод
Вот и все. Я надеюсь, что это вводное руководство по HTML5 Canvas дало вам хорошую отправную точку для продолжения изучения и изучения этой мощной технологии.