Отличия от Shape и Html

В библиотеке mo.js анимационные примитивы разделены на несколько модулей, среди которых ключевыми являются Shape и Html. Их принципиальное различие заключается в уровне абстракции над графикой и способе взаимодействия с DOM и графическим контекстом.

Shape опирается на векторные примитивы и SVG-рендеринг, формируя анимации через математическое описание геометрии. Html работает непосредственно с DOM-элементами, изменяя их стили и трансформации через CSS.

Такое разделение формирует два разных подхода к построению анимаций: графический слой против документного слоя.


Shape: графические примитивы

Модуль Shape ориентирован на создание и анимацию геометрических объектов, таких как круги, прямоугольники, многоугольники, звезды и пользовательские формы.

Основные особенности:

  • использование SVG-структуры как базового контейнера
  • декларативное описание формы через параметры
  • высокая точность геометрических преобразований
  • независимость от DOM-структуры страницы

Каждая фигура описывается параметрически: радиус, количество лучей, углы, закругления, толщина обводки. В результате формируется векторный объект, который легко масштабируется без потери качества.

Ключевое свойство Shape — предсказуемость поведения при трансформациях. Изменение масштаба, поворота или смещения не приводит к пересчету потоковой верстки, так как объект существует в отдельном графическом контексте.


Html: DOM-анимации

Html-модуль предназначен для работы с существующими элементами страницы. В отличие от Shape, он не создаёт графические примитивы, а управляет стилями уже существующих узлов DOM.

Основной принцип:

  • манипуляция CSS-свойствами
  • использование transform, opacity, filter
  • интеграция с layout-структурой документа

Html-анимации напрямую зависят от рендеринг-пайплайна браузера. Это означает, что любые изменения могут затрагивать перерасчёт компоновки, особенно при работе с свойствами, влияющими на поток документа.

Сильная сторона Html заключается в возможности анимировать реальные интерфейсные элементы: кнопки, блоки, текстовые контейнеры. Это делает модуль пригодным для UI-анимаций, где важна связь с логикой интерфейса.


Сравнение системы свойств

Shape и Html используют разные наборы анимируемых параметров.

В Shape основными являются:

  • радиус и геометрические размеры
  • количество сегментов и точек
  • параметры stroke и fill
  • деформации кривых
  • относительные координаты внутри SVG-сцены

В Html используются:

  • transform (translate, scale, rotate)
  • opacity
  • CSS-фильтры
  • позиционирование через top/left (реже)
  • любые свойства, поддерживающие интерполяцию CSS

Shape оперирует математическими параметрами, тогда как Html — стилевыми характеристиками визуального представления DOM-элемента.


Производительность и рендеринг

Различия в производительности обусловлены уровнем абстракции и механизмом обновления кадров.

Shape:

  • использует SVG-рендеринг или внутренний графический слой
  • изменения локализованы внутри графического объекта
  • отсутствует влияние на layout страницы
  • предсказуемая нагрузка при большом количестве объектов

Html:

  • зависит от браузерного движка рендеринга DOM
  • может вызывать reflow и repaint
  • чувствителен к количеству одновременно анимируемых элементов
  • оптимизация достигается через transform и opacity

При большом количестве объектов Shape демонстрирует более стабильное поведение, так как не вовлекает потоковую модель документа.


Координация анимаций и сцены

В mo.js обе системы могут интегрироваться в единый timeline, но ведут себя по-разному.

Shape-объекты существуют как независимые визуальные сущности внутри графического слоя. Их синхронизация осуществляется через общие таймлайны и параметры задержек.

Html-анимации привязаны к жизненному циклу DOM-элементов, поэтому их состояние может зависеть от изменений структуры страницы, видимости и каскада стилей.

В результате Shape обеспечивает более изолированную анимационную среду, тогда как Html тесно связан с состоянием интерфейса.


Поведение трансформаций

Transformations в Shape и Html реализуются по-разному.

В Shape:

  • трансформации применяются к координатной системе объекта
  • изменения происходят в пространстве SVG/Canvas-подобной модели
  • сохраняется геометрическая целостность фигуры

В Html:

  • transform применяется как CSS-правило
  • влияет на визуальное положение без изменения потока документа
  • может комбинироваться с другими стилями композиции

Shape-трансформации ближе к математическим операциям над объектом, Html — к визуальным эффектам поверх существующей структуры.


Работа с цветом и стилями

Shape использует SVG-ориентированную модель окрашивания:

  • fill и stroke задаются как атрибуты
  • поддерживаются градиенты и прозрачность
  • интерполяция цвета происходит в графическом пространстве

Html использует CSS-цвета:

  • color, background-color, border-color
  • поддержка всех CSS-форматов (rgba, hsla, hex)
  • наследование через каскад стилей

В Shape цвет является частью геометрического объекта, в Html — частью визуального оформления элемента.


Интеграция с timeline

Обе системы поддерживают работу с временными шкалами mo.js, однако механика различается.

Shape:

  • анимации рассчитываются как изменения параметров формы во времени
  • ключевые кадры влияют на геометрию объекта
  • высокая точность синхронизации параметров

Html:

  • timeline управляет CSS-переходами и transform-значениями
  • анимации зависят от интерполяции стилевых значений
  • возможны задержки при сложной нагрузке DOM

Shape обеспечивает более детерминированное поведение при сложных последовательностях анимаций, Html — более гибкую интеграцию с интерфейсом.


Ограничения и области применения

Shape:

  • не предназначен для прямого взаимодействия с DOM
  • ограничен графической моделью SVG
  • требует отдельного слоя для интерактивности интерфейса

Html:

  • зависит от структуры документа
  • подвержен влиянию CSS-каскада
  • может деградировать при большом количестве элементов

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