Библиотека холстов HTML5 для виджета пользовательского интерфейса

Я искал библиотеку, которая может помочь в рендеринге и функциональности виджета пользовательского интерфейса, встроенных в область холста, таких как комбинированные поля, флажки, переключатели, текстовые области, списки с полосами прокрутки и т.д., без накладывая обычные HTML-элементы, плавая их поверх области холста. Flex предоставляет все это для Flash, и есть много библиотек Actionscript, которые создают компоненты виджета пользовательского интерфейса в Flash-холсте (так сказать). Эти библиотеки виджета пользовательского интерфейса хорошо служили сообществу Flash в определенных ситуациях, и это также необходимо в аналогичных ситуациях в холсте HTML5.

Кто-нибудь знает, где можно найти эти библиотеки?

Ответ 2

Пока нет явных библиотек, которые я видел, но я гарантирую, что они будут сделаны когда-нибудь, хотя бы потому, что люди потребуют их (по уважительным причинам или плохо).

Спецификация Canvas HTML5 сама по себе не советует пытаться это сделать. Как говорится в спецификации:

Авторы должны избегать использования элементов управления редактированием текста с использованием элемента canvas. Это имеет большое количество недостатков:

  • Необходимо переопределить расположение мыши в карете.
  • Перемещение клавиатуры в каретке должно быть переопределено (возможно, в разных строках, для многострочного ввода текста).
  • Прокрутка текстового поля должна быть реализована (горизонтально для длинных строк, вертикально для многострочного ввода).
  • Реальные функции, такие как копирование и вставка, должны быть повторно реализованы.
  • Реальные функции, такие как проверка орфографии, должны быть повторно реализованы.
  • Необходимо повторить выполнение таких функций, как drag-and-drop.
  • Необходимо пересмотреть внутренние функции, такие как текстовый поиск на странице.
  • Собственные функции, специфичные для пользователя, например пользовательские текстовые службы, должны быть переопределены. Это почти невозможно, так как у каждого пользователя могут быть установлены разные службы, и существует неограниченный набор возможных таких сервисов.
  • Двунаправленное редактирование текста должно быть переопределено.
  • Для многострочного редактирования текста для всех соответствующих языков необходимо выполнить перенос строк.
  • Выбор текста должен быть переопределен.
  • Повторное выполнение перетаскивания двунаправленных текстовых вариантов.
  • Необходимо переопределить сочетания клавиш на платформе.
  • Необходимо переопределить редакторы метода на основе платформы (IME).
  • Функция отмены и повтора должна быть переопределена.
  • Необходимо переопределить функции доступности, такие как увеличение после каретки или выделения.

Реализация таких вещей в Canvas - это кошмар, особенно сегодня, когда один и тот же шрифт выглядит не только для браузера, но и отличается от Canvas рендерингом шрифта и браузера, отображающего шрифт.