Разработка сайтов в Угледаре, ДНР. Canvas против SVG: выбор правильного инструмента для работы

HTML5 Canvas и SVG — это основанные на стандартах технологии HTML5, которые можно использовать для создания потрясающей графики и визуальных эффектов. Вопрос, который я задаю в этой статье, заключается в следующем: имеет ли значение, какой из них вы используете в своем проекте? Другими словами, есть ли варианты использования HTML5 Canvas вместо SVG?

Во-первых, давайте потратим несколько слов на введение в HTML5 Canvas и SVG.

Что такое холст HTML5?

Вот как спецификация WHATWG представляет этот canvasэлемент:

Этот canvasэлемент предоставляет сценариям растровое полотно, зависящее от разрешения, которое можно использовать для рендеринга графиков, игровой графики, рисунков или других визуальных изображений на лету.

Вы можете воспользоваться преимуществами методов и свойств HTML5 Canvas API, получив ссылку на объект 2D-контекста. В приведенном выше примере я нарисовал простой красный квадрат размером 100×100 пикселей, расположенный на расстоянии

Красный квадрат, нарисованный с помощью HTML5 Canvas

Поскольку изображения, которые вы создаете, зависят от разрешения

Рисование простых фигур — это только вершина айсберга. HTML5 Canvas API позволяет рисовать дуги, контуры, текст, градиенты и т. д. Вы также можете манипулировать изображениями попиксельно. Это означает, что вы можете заменить один цвет на другой в определенных областях графики, вы можете анимировать свои рисунки и даже нарисовать видео на холсте и изменить его внешний вид.

Что такое SVG?

SVG означает масштабируемую векторную графику. Согласно спецификации:

SVG — это язык описания двухмерной графики. В качестве самостоятельного формата или в сочетании с другим XML он использует синтаксис XML. При смешивании с HTML5 используется синтаксис HTML5...

Рисунки SVG могут быть интерактивными и динамичными. Анимации можно определять и запускать либо декларативно (т. е. путем встраивания элементов анимации SVG в содержимое SVG), либо с помощью сценариев.

SVG — это формат файла XML, предназначенный для создания векторной графики. Преимущество масштабируемости заключается в том, что вы можете увеличивать или уменьшать векторное изображение, сохраняя при этом его четкость и высокое качество. (Это невозможно сделать с изображениями, сгенерированными с помощью HTML5 Canvas.)

Вот тот же красный квадрат (ранее созданный с помощью HTML5 Canvas), на этот раз нарисованный с помощью SVG:

Вы можете делать с SVG почти все то же, что и с Canvas — например, рисовать фигуры и контуры, градиенты, шаблоны, анимацию и так далее. Однако эти две технологии работают принципиально по-разному. В отличие от графики на основе Canvas, SVG имеет DOM, и поэтому и CSS, и JavaScript имеют к нему доступ. Например, вы можете изменить внешний вид SVG-графики с помощью CSS, анимировать ее узлы с помощью CSS или JavaScript, сделать так, чтобы любая из ее частей реагировала на события мыши или клавиатуры так же, как файл

. Как станет яснее в следующих разделах, это различие играет важную роль, когда вам нужно сделать выбор между Canvas и SVG для вашего следующего проекта.

Немедленный режим и сохраненный режим

Крайне важно различать немедленный режим и сохраненный режим. HTML5 Canvas — пример первого, SVG — второго.

Немедленный режим означает, что как только ваш рисунок окажется на холсте, холст перестанет отслеживать его. Другими словами, вы, как разработчик, должны разработать команды для рисования объектов, создания и поддержки модели или сцены того, как должен выглядеть окончательный результат, и указать, что необходимо обновить. Графический API браузера просто передает ваши команды рисования браузеру, который затем их выполняет.

SVG использует сохраненный подход, когда вы просто выдаете свои инструкции по рисованию того, что вы хотите отобразить на экране, а графический API браузера создает в памяти модель или сцену окончательного вывода и переводит ее в команды рисования для вашего браузера.

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

На основе различий между немедленным и сохраненным режимами, а также других специфических характеристик Canvas и SVG соответственно можно выделить несколько случаев, когда использование одной технологии вместо другой может лучше служить целям вашего проекта.

Холст HTML5: плюсы и минусы

Спецификация HTML5 Canvas четко рекомендует авторам не использовать

Например, для графически богатого

элемента лучшими инструментами являются HTML и CSS, а не

В этой статье я рассмотрел некоторые ключевые функции как HTML5 Canvas, так и SVG, чтобы помочь вам решить, какая технология лучше всего подходит для конкретных задач.

Делитесь нашими материалами с друзьями!

 

 

Заказать разработку сайта