От автора: посмотрим правде в глаза: когда мы работаем над интерфейсом, написание CSS — это не то, что нас больше всего волнует. Нам нравится возиться с более серьезными вещами (вы понимаете, о чем я — JavaScript). Большинство приложений, с которыми я сталкивался, и я уверен, что вы тоже, имеют большой беспорядок в области таблицы стилей. Такие проблемы, как дублирование кода, переопределение стилей, отсутствие организации и т. д. — обычная вещь.
В этой статье я хотел бы поделиться с вами, как я придумал методику, которая улучшает мой стиль и, следовательно, мой образ жизни.
Создание библиотеки основных компонентов
В каждом приложении существует единый стиль. Это может быть отражено в стилях полей ввода, кнопок, вкладок, всплывающих подсказок и т. д. Поэтому я рекомендую написать библиотеку основных компонентов на основе руководства по стилю приложения. Преимущества такой библиотеки — наличие единого источника достоверной информации о стиле и поведении компонентов, а также более быстрые циклы разработки, особенно по мере того, как приложение становится больше и сложнее. Например:
1 2 3 |
<button appButton>Click</button> <app-select [options]="[]"></app-select> <app-accordion>....</app-accordion> |
Такую библиотеку можно построить двумя способами; в случае, если приложение уже велико, и у нас есть большое количество компонентов, рекомендуется создать специальную команду, которая будет ее создавать.
В случае, если приложение небольшое, мы можем сделать это пошаговым образом и позволить каждому разработчику создать некоторые основные компоненты как часть функции, над которой они работают.
Используйте служебные классы
Теперь, когда у нас есть библиотека, которая предоставляет нам все компоненты, необходимые для создания новой функции, нам нужно заняться более мелкими вещами. Например, стилизация отображения элементов с помощью flexbox или сетки, добавление полей, отступов и т. д. Чтобы справиться с этим, я рекомендую использовать подход служебных классов — он и быстрый, и чистый. В своих проектах я использую библиотеку CSS Tailwind.
Tailwind CSS — это настраиваемый низкоуровневый CSS-фреймворк, который дает вам все строительные блоки, необходимые для создания нестандартных дизайнов без каких-либо раздражающих стилей, с которыми вам придется повозиться.
Давайте добавим Tailwind в наш проект, используя еще одну аккуратную библиотеку от ngneat. Эта схема добавит CSS Tailwind в приложение Angular.
Как мы видим, в ней есть все необходимое для начала работы. Теперь мы можем использовать ее везде, где нужно:
1 2 3 4 5 |
<div class="flex justify-between"> <div class="mr-4"> ... </div> </div> |
В режиме разработки мы загружаем всю библиотеку Tailwind. Но круто то, что в производственном режиме мы активируем PurgeCSS, который сканирует наш проект и объединяет только классы, используемые в нем.
Обычно я ограничиваю себя пятью служебными классами на один элемент, и, честно говоря, было только несколько случаев, когда я достиг даже этого количества. Даже если вы обнаружите, что используете много классов, вы можете использовать функции Tailwind apply, чтобы переместить их в таблицу стилей и заменить одним классом в шаблоне.
Я настоятельно рекомендую изучить Tailwind, так как у него много возможностей. Если вы работаете с VSCode, вы можете использовать этот отличный плагин для IntelliSense:
Или используйте этот плагин для быстрого доступа к документации:
В Webstorm вы также получите автозаполнение из коробки.
Используйте переменные CSS
Я хочу закончить небольшим, но важным советом — используйте переменные CSS. Применяйте их для определения цветов, размеров и любых других значений, которые многократно используются в приложении. Они широко поддерживаются, могут быть изменены во время выполнения и могут быть ограничены элементом.
Например, посмотрите, как легко вы можете создать темный режим для своего приложения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
:root { --font-family: Helvetica, Arial, Sans-Serif; } body { --primary-100: #fff; --primary-200: #9f1f12; } body.dark-theme { --primary-100: #000; --primary-200: #f2f2f2; } body { background-color: var(--primary-100); color: var(--primary-200); font-family: var(--font-family); } |
Теперь единственное, что нам нужно сделать, это переключить класс dark-theme.
Если вы это пропустили
Вот несколько моих проектов с открытым исходным кодом:
Akita: управление состоянием, специально разработанное для приложений JS
Spectator: мощный инструмент для упрощения тестов Angular
Transloco: библиотека интернационализации Angular
Forms Manager: Foundation для Proper Form Management в Angular
Cashew: гибкая и простая библиотека, которая кэширует HTTP-запросы.
Error Tailor: бесшовные формы ошибок для приложений Angular
Автор: Netanel Basal
Источник: //netbasal.com
Редакция: Команда webformyself.