Представьте себе, вы создаете свое веб-приложение для этой новой эпической идеи и реализуете основные функции. Вы думаете, что дизайн может появиться позже.

Что ж, теперь, когда вы набираете обороты и получаете обратную связь, пришло время пересмотреть или полностью воссоздать свой дизайн!

В этой статье я расскажу об инструментах и ​​методах, которые вы можете использовать для этого.

Я лично попал в такую ​​ситуацию с моим веб-приложением Mylo, приложением для управления тренировками. По мере того, как он рос и контактировал с пользователями, возникали проблемы с цветовым контрастом, несоответствиями и многим другим.

Устранение этих проблем можно описать двумя основными направлениями:

  • Дизайн-система (как все будет выглядеть)
  • Реализация (как применить внешний вид)

(Я сосредотачиваюсь на том, чтобы посмотреть здесь, но понимаю, что дизайн составляет только около 20% внешнего вида, остальное должно быть связано с пользовательским опытом)

Пройдя через это, я многому научился, но также сделал очевидным, насколько еще нужно научиться. Если вы обнаружите какие-либо ошибки или у вас есть несколько советов, пожалуйста, дайте мне знать: D

В этой статье я буду использовать TailwindCSS, но все работает так же хорошо, как и без него.

Компонент 1: Дизайн-система

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

Итак, чем больше вы изучаете, что составляет дизайн-систему, тем больше кажется, что это невыполнимая задача. Полная система дизайна включает цвета, правила интервалов, стили текста, кнопки, контейнеры, брендинг, специальные возможности и многое другое.

Лучший и наиболее исчерпывающий ресурс, который я нашел, - это Контрольный список системы дизайна.

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

Итак, мы рассмотрим, как реализовать такие элементы, как кнопки, значки, цвета и несколько типов ввода.

Компонент 2: Реализация

Структура каталогов

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

Я рекомендую помещать самые маленькие / атомарные элементы в папку src/components, а затем в их собственные подпапки (значки, входы, кнопки и т. Д.)
Составные компоненты, созданные из более мелких, могут быть помещены в папку src/layouts, снова со своими собственными подпапками.

Цвета

Определение и применение цветов - хороший первый шаг.

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

Вот как это выглядит в TailwindCSS: я переписал цвета по умолчанию, чтобы принудительно использовать системные цвета, но вы также можете расширить тему по умолчанию и добавить свои собственные цвета.

Документы TailwindCSS - Конфигурация темы

Если вы не используете попутный ветер, этого также можно добиться с помощью таких переменных CSS:

Иконки

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

Получить фактические SVG можно с помощью параметров экспорта таких инструментов дизайна, как Figma, Sketch или Illustrator.

Когда у вас есть файлы, вы можете оптимизировать их с помощью SVGO, есть инструмент командной строки и веб-интерфейс.





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

Затем мы переносим значки в наше приложение Vue, я использовал метод, рекомендованный в Vue Cookbook. Это система, созданная Сарой Драснер, королевой SVG, и вы можете найти ссылку на нее здесь.

Чтобы он работал с TailwindCSS, вам нужно внести несколько изменений:

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



Кнопки

Изначально я хотел добавить кнопки так же, как с иконками, используя компоненты Vue, но это оказалось обманчиво сложным. Компонент должен был работать с кнопками, ссылками или router-link (с использованием vue-router).

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

В качестве решения я извлек общие классы в их собственные утилиты в TailwindCSS, что в чистом CSS является просто нормальным правилом класса.

Некоторые примеры:

Текстовый ввод

Для входных данных мы можем использовать компоненты Vue, но есть несколько вещей, которые следует учитывать.

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

Я также рискнул включить метку в компонент. Он соответствует дизайну, более доступен и гарантирует, что я никогда не забуду их.

Начнем с BaseInput.vue компонента:

А вот пример использования BaseInput.vue:

Обратите внимание, как мы вызываем компонент BaseInput.vue. Удивительно, но импортированные компоненты не отображаются в функциональных компонентах при использовании формата шаблона. Поэтому вместо этого мы помещаем импортированные компоненты в инъекции. Их также можно поместить в реквизит, если хотите.

Этот метод был поднят в этой проблеме на github:



Радио-кнопки

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

Уловка, которую я обнаружил, состояла в том, чтобы использовать поведение переключателей, обертывающих ярлыки.
Сами по себе кнопки маленькие, и их сложно коснуться / щелкнуть, но если вы обернете их ярлыком, щелкнув в любом месте поля ярлыка, вы также выберете радио-кнопку.
Используя это, я стилизовал переключатели, фактически сделав вид метки так, как я хотел, и спрятал переключатели внутри метки.

Будьте осторожны при скрытии переключателя, поскольку он все еще должен быть видимым для программ чтения с экрана, tailwind предлагает для этого класс в стандартном CSS, который выглядит следующим образом:

Что касается v-slot и всех OR (||), я объясню это в следующем разделе о входах select.

Действительно полезный ресурс, в котором также есть флажки:

Smashing Magazine - Создание пользовательских входов в VueJS

Выбрать вход

Компонент select очень интересен как с точки зрения дизайна, так и с точки зрения функциональности.

С точки зрения дизайна было удивительно обнаружить, насколько «хакерским» является изменение стандартной стрелки вниз. Есть несколько способов сделать это, но трюк, на который я пошел, - это удалить стиль по умолчанию, установив appearance: none;, а затем добавив свой SVG по своему выбору с функцией URL-адреса CSS.

Чтобы сделать что-то подобное, вам нужно будет закодировать свой тег SVG в строку, совместимую с URL, я обнаружил, что этот сайт делает именно это:



Затем есть еще несколько стилей позиционирования и интервалов, чтобы разместить значок там, где вы хотите.

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

Это связано с тем, что в официальном документе Vue показаны примеры использования массива строк и массива объектов для заполнения выбора.

Эти компоненты оболочки также дают возможность применять передовые методы, такие как метка для ввода и пустой отключенный первый вариант для лучшей поддержки iOS.

Заключение

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

Следующим шагом после упаковки всех этих полей ввода будет их объединение в форму или другой макет для повторного использования. Это некоторые из компонентов, которые вы поместите в папку src/layouts. Вы можете рассчитывать на следующую статью, когда я сам ее закончу: D

Не стесняйтесь оставлять любые комментарии ниже, и если у вас есть вопросы или вы хотите следить за ними, вы можете найти меня в твиттере @MaxMonteil

Другие полезные ссылки





Первоначально опубликовано на https://dev.to 31 января 2020 г.