Вы когда-нибудь задумывались, что верстка вручную — это трудоемко, дорого, избыточно и устарело? Я здесь все время.
В этой статье я поверхностно коснусь текущего состояния отрасли, проблем и поделюсь результатами своих исследований.
Интересный? Добро пожаловать коту!
Перед началом Если вы хотите «почувствовать» это сразу, вот оно.
Здесь показаны общие моменты, ряд аспектов модели и крайние случаи остались за рамками реализации, что сказалось на качестве, но я считаю, что общая концепция проверена, подробнее ниже.
Условия В тексте я использую термин «Макет» в 2-х значениях:
- Процесс создания разметки
- HTML, CSS, JS и другие документы — это артефакты, созданные после работы верстальщика.
С тех пор я внимательно слежу за усилиями по решению этого вопроса.
Теперь у нас есть такие инструменты, как Workflow, Bootstrap Studio, inVision , Создатель , Supernova, React Studio и многие другие прямые или косвенные решения.
А еще у нас есть космические исследования на эту тему с использованием нейронов, а-ля pix2code или Sketch2code. Но, к моему сожалению, мне так и не удалось найти инструмент, который можно было бы органично внедрить в процесс разработки.
Что ты хочешь? Я хотел бы получить макет от дизайнера, добавить логику, разбить его на компоненты, подправить макет там, где это необходимо, получить библиотеку компонентов и вернуть все это дизайнеру для дальнейшего взаимодействия.
Я понимаю, что это превосходит даже самые передовые возможности индустрии, но это моя мечта.
Как он говорит Джеймс Стэтхэм Конфуций, великая дорога начинается с первого шага, поэтому я, найдя немного времени, решил понять, с чего начать.
Именно об этом и будет эта статья.
Проблемы Здесь нужно сразу обсудить разницу между версткой и интерфейсом: Макет — это полуфабрикат , грубо говоря, результат преобразования графического формата в HTML, CSS и другие файлы, предназначенные для дальнейшего преобразования в интерфейс.
Интерфейс является полноценным артефактом системы.
, с которым будут взаимодействовать пользователи.
В 2020 году ручная верстка по-прежнему остается основным способом создания веб-интерфейсов, что само по себе довольно интересно.
Это противоречит тенденции создания параллельных стеков, таких как собственные и настольные приложения, где инструменты визуального проектирования интерфейсов являются стандартом для их создания.
Можно долго говорить о том, почему это так, но основные выводы я думаю такие: высокие требования к финальному макету И необходимость контроля низкого уровня , предлагаю оставить за скобками «фойе верстальщиков».
Планировка сложная , требует использования специальных методов и инструментов для управления, минимизации ошибок и поддержания актуальности.
Отдельный вопрос — анимация, поскольку создание анимации — совершенно невыполнимая задача для многих проектов с точки зрения ресурсоемкости.
Планировка стоит дорого , в среднем это от 25% стоимости всей системы для SPA и до 75% для лендингов.
Не существует общепринятого теории компоновки как таковой.
Стандарт W3C очень широк, и каждый программист/команда руководствуется своими собственными правилами и стандартами, которые входят в сферу действия допустимой разметки.
Решение Во-первых, необходимо формализовать процесс верстки, определить сущности, алгоритм и правила.
Конечно, сама по себе тема достаточно обширна, и ее полное раскрытие не является темой данной статьи.
Исходя из этого, мы рассмотрим только ту часть, которая интересна на данный момент.
Образец
Шаг 1
Визуально разделить на Дерево блоков высокого уровня .
Давайте найдем линии И Столбцы макета
Шаг 2
Семантический анализ, давайте определимся основные блоки :- Кепка;
- Тело;
- Боковые панели;
- Подвал.
Здесь мы сразу сталкиваемся с интересным явлением: простой компоновки не всегда достаточно для построения полноценной структуры, поэтому дизайнер интерфейса должен уточнять поведение блоков.
Что говорит о том, что семантического анализа тоже не всегда достаточно.
И на данный момент нам этого достаточно.
Здесь мы можем разделить нашу задачу на две большие группы:
- Технический И
- Семантический .
Несмотря на то, что верстка из картинки с помощью нейросети — очень интересная задача, на мой взгляд, она избыточна.
Сложно представить ситуацию, когда в ходе обычного рабочего процесса верстальщик получит макет в формате растрового изображения.
Чаще всего это форматы, созданные в таких инструментах, как Figma, Sketch или Adobe Photoshop, которые уже содержат практически исчерпывающую информацию о макете, а главное:
- Положение элементов;
- Тип элемента;
- Стили элементов.
преобразование И результаты исследований , а такие сервисы, как Anima, напрямую построены на синхронизации макетов и интерфейсов.
Но почему такие решения не привели к эффекту взрыва бомбы и через 2 года нет ничего лучше старой доброй рукодельной компоновки? Здесь повторюсь, по моему мнению, причиной этого являются два фактора:
- Высокие требования к качеству;
- Потребность в контроле.
Будет проще сразу реализовать качественную верстку и управлять ею, чем пытаться исправить некачественную.
Таким образом, первое требование является первостепенным.
Но что определяет качество кода? Если мы уберем официальные показатели качества, такие как LTR, доступность и тому подобное, у нас останутся важные показатели качества для разработчиков :
- Правильное дерево;
- Семантика;
- Никакого резервирования;
- Читабельность и редактируемость;
- Использование блоков, вынесенных из потока, только там, где это необходимо.
Попробуем доказать, что это возможно, построив дерево блоков.
Для этого нам необходимо снова формализовать процесс и ввести необходимые понятия, оставив ряд крайних случаев для будущих исследований.
Строки и столбцы
Струны
Если положение одного элемента попадает в сегмент высоты другого, то они образуют одну линию.
Столбцы
Аналогично, если позиция одного элемента попадает в ширину другого, они образуют один столбец.
Отношения элементов
Независимое местоположение
Элементы позиционируются относительно друг друга в зависимости от потока.Дерево дополняется при необходимости.
Расположение перекрытия
Перекрывающиеся элементы извлекаются из потока, позиционируются абсолютно и не влияют на позиционирование других элементов.
Процесс построения дерева блоков
Шаг 1
Давайте определим все линии.
Шаг 2
Найдите отступы для каждой строки.
Шаг 3
Выбираем линию для работы и определяем тип разметки :- Один столбец
- Многоколоночный
Шаг 4
Для нескольких столбцов мы определяем тип динамика :- Плавающий
- Сеть
Шаг 5
Мы определяем тип столбца по количеству элементов в нем:- Одинокий
- Множественное число
Шаг 6
Для типа столбца «множественный» находим все строки Типы строк аналогично типам столбцов:- Плавающий
- Сеть
Повторяем весь алгоритм до тех пор, пока есть хотя бы один необработанный блок.
А теперь реализуем полученные операторы в код.
Упрощение:
- Быстрое внедрение, охватывающее лишь ~20% случаев;
- Ожидаются ошибки позиционирования;
- Одноуровневая структура исходных блоков;
- Стили записываются в атрибуте style;
Заключение Автоматизация качественной верстки возможна без использования слабоуправляемых алгоритмов машинного обучения.
Это позволит существенно снизить затраты на создание продукции и повысить ее качество.
Немаловажно и то, что это упростит работу разработчиков и сделает ее более интуитивно понятной и приятной.
Но необходимы дальнейшие исследования, а сама проблема требует большего внимания сообщества для реализации полнофункциональной модели и инструментов на ее основе.
Что дальше? Думаю, следующий важный шаг – это подтверждение концепции управляемости автоматической маркировки.
Основным фактором здесь будет преобразование кода обратно в макет, чтобы при изменении разметки она обновлялась — создавая двустороннюю связь между инструментом дизайна и разметкой.
Буду рад конструктивной критике и такому же обсуждению.
Мир всем! Теги: #CSS #JavaScript #HTML #html5 #html-макет
-
Jetking — Самый Известный Карьерный Институт
19 Oct, 24 -
Red Hat Linux Очень Прост В Использовании.
19 Oct, 24 -
Миграционное Безумие
19 Oct, 24 -
Macheist Nanobundle
19 Oct, 24