Академический Документы
Профессиональный Документы
Культура Документы
Райан Делюка
программист
The Nerdery
Введение
В первой части этого цикла из двух статей говорится о создании приложений, которые
сочетают в себе преимущества API Canvas и модели HTML/CSS. API Canvas хорошо
подходит для Web-приложений, требующих высокой производительности и обработки
графики с малыми издержками. Однако приложениям, целиком построенным на Canvas,
недостает возможностей традиционной модели HTML/CSS. Мы покажем, как использовать
множество полезных свойств HTML/CSS, которые трудно или невозможно реализовать в
Canvas.
Так как весь текст подчиняется правилу единого стиля — красный, курсив, шрифт Arial, —
его можно одинаково легко воспроизвести с помощью HTML/CSS или Canvas.
В листингах 1 и 2 сравнивается код для отображения этого текста с помощью HTML и CSS и
с помощью Canvas. Действующий пример см. в разделе Ресурсы.
В API Canvas нет тегов HTML или классов CSS, которые позволяли бы указывать на
использование различных стилей шрифта, поэтому оформление текстового блока из
предыдущего примера значительно усложняется.
Так как API Canvas функционирует как последовательный конечный автомат, для создания
эффекта, изображенного на рисунке 2, требуется то, что можно описать как подход
«пишущей машинки». Нужно выбрать стиль, набрать часть текста, которая должна быть
оформлена этим стилем, затем выбрать другой стиль, напечатать следующую часть текста и
т.д.
1. Указать стиль, который будет использоваться для следующей части текста (18px Arial,
зеленый).
2. Воспроизвести в Canvas следующую часть текста (Variety).
3. Переместиться вправо на определенное количество пикселов (60).
4. Повторить шаги 1-3 для каждой части текста.
На рисунке 3 показано, как будут выглядеть три отдельных текстовых блока по мере их
последовательного отображения.
Следует отметить, что большинство стилей текста, привычных при использовании HTML/
CSS, таких как перенос слов, межбуквенный интервал и высота строки, в API Canvas
изначально не поддерживается. В случае необходимости придется изменять алгоритм и
реализовать эти функции самостоятельно.
Тем не менее, поисковые системы все же смогут прочесть любой предупредительный текст
внутри элемента <Canvas>, предназначенный для несовместимых с HTML5 браузеров, как
показано в листинге 5.
Это не только проблема Canvas — отсутствие поддержки поисковых машин всегда была
проблемой приложений, написанных для плагинов Web-браузеров, таких как Flash и
Silverlight.
Доступность
Пользователи с ухудшенным зрением для чтения Web-страниц полагаются на инструменты
преобразования текста в речь (скринридеры). Структурированная разметка HTML позволяет
скринридерам различать заголовки, колонтитулы, списки и т.п. Приложения, которые не
Даже плагины браузера, такие как Flash и Silverlight, добились больших успехов в
обеспечении доступности, поддерживая часто используемые сочетания клавиш. К
сожалению, Canvas не предоставляет аналогичных встроенных механизмов обеспечения
доступности.
Поддержка гиперссылок
По своей сути, Web построен на гиперссылках — трудно представить себе мир без
них. Помимо того что пользователи могут переходить по ссылкам, современные агенты
предоставляют им богатые дополнительные контекстуальные возможности: открытие
страницы в новой вкладке, копирование адреса ссылки, отправка ссылки по электронной
почте и т.п.
Как уже отмечалось, одним из главных недостатков Canvas является трудность реализации
мощных, доступных компонентов пользовательского интерфейса. При выборе наилучшего
подхода для реализации пользовательского интерфейса полезно оценить требования,
предъявляемые к его элементам. В число критериев могут входить:
Впоследствии, когда все детали приложения конкретизированы, HTML и CSS можно будет
заменить чистым Canvas. В случае примера с меню, преобразование меню в Canvas
для конечного продукта заметно улучшит производительность благодаря исключению
зависимости от модели документа браузера.
Инструменты разработки
Для инструментов разработки естественным образом подходят HTML и CSS, учитывая
простоту использования HTML-разметки для отображения больших объемов информации.
Примером может служить консоль для целей отладки. Такая консоль может отображать
статистику в кадрах в секунду, список всех объектов в приложении с их координатами и т.п.
Так как Canvas находится на самом переднем плане, он будет захватывать все виды ввода
данных пользователем (нажатие кнопок мыши, события сенсорного экрана и т.д.).
Определенный HTML-элемент можно настроить так, что он будет игнорировать ввод данных
пользователем, установив свойство CSS pointer-events, как показано в листинге 9. При
значении свойства pointer-events none элемент игнорирует все поведение, которое обычно
ассоциируется с вводом пользователя — весь текст, гиперссылки и элементы формы в
пределах этого элемента <div> будут невыделяемыми и практически неприменимыми.
Это удобно для сценариев, где элементы HTML используются только для отображения
информации. Никакая интерактивность элементов HTML-интерфейса невозможна, потому
что поверхность ввода перехватывает все события, прежде чем они достигнут нижележащих
элементов. Пример приведен на рисунке 9.
Последующие шаги
Во второй статье этого цикла мы разовьем понятия, представленные в этой статье, и
разберем пример реализации гибридного приложения Canvas/HTML. Шаг за шагом, вы
Заключение
В этой статье говорится о сильных и слабых сторонах модели HTML по сравнению с API
Canvas, причинах создания гибридных приложений Canvas/HTML и различных подходах к
иерархическому представлению элементов HTML и Canvas.
Загрузка
Описание Имя Размер
Исходный код примера для статьи Canvashtmlpt1sourcecode.zip 2 КБ
Об авторах
Кевин Мут
Райан Делюка