Статьи

Hocus-Pocus: создание Sass Framework без дизайна

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

Почему я начал работать над Sass Framework?

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

Тогда возникает второй вопрос: почему вы не используете существующую, хорошо известную и проверенную среду, такую ​​как Bootstrap?

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

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

Предварительные требования и принципы

Установка

Каркас доступен и прост в установке благодаря двум различным менеджерам пакетов: Bower и npm. Для работы требуется Sass (минимально необходимая версия — 3.3.0) и Autoprefixer . Autoprefixer используется для добавления необходимых префиксов вендора в окончательный скомпилированный файл CSS. В настоящее время я не слишком беспокоюсь о совместимости между различными браузерами, так как лично я считаю, что авторефикса достаточно. Кроме того, я использую sass linter ( scss-lint ), но это не требуется для запуска Hocus-Pocus и правильной работы. Hocus-Pocus будет работать без него.

Соглашение об именовании

Следующий принцип важен для каждой структуры — соглашение об именах. Я предпочитаю обычные имена классов в стиле тире без БЭМ. Я не буду жаловаться, если вы являетесь поклонником BEM и предпочитаете использовать соглашение об именах BEM, если оно работает для вас — продолжайте. С моей точки зрения, БЭМ не решает все проблемы ответственности в CSS. Я также обнаружил, что при использовании БЭМ я подхожу к своему CSS, используя меньше элементов уровня класса. Добавить новый элемент в существующий блок слишком просто.

Документация

И последнее, но не менее важное: я уделяю пристальное внимание написанию документации и обновлению журнала изменений Hocus-Pocus. Документация не должна быть идеальной, особенно в начале, но я всегда стараюсь найти время, чтобы ее улучшить. Это помогает новичкам узнать, как работает инструмент, и позволяет мне отслеживать особенности фреймворка.

Особенности фреймворка

Следующие особенности фреймворка являются наиболее характерными для Hocus-Pocus, на мой взгляд, и дают лучший обзор того, чем они на самом деле являются.

Большинство базовых классов основаны на существующих проектах, над которыми я работал в прошлом. Вы также можете заметить некоторые сходства с другими CSS-фреймворками, которые вдохновили меня, особенно мои любимые — Primer и InuitCSS .

Особенности фреймворка в Hocus-Pocus включают в себя:

  1. Нормализовать с некоторыми улучшениями, такими как глобальный box-sizingborder-box
  2. Новая цветовая палитра по умолчанию на основе clrs.cc.
  3. Текучая сетка на основе flexbox с помощниками ширины, которые используют дроби в качестве имен классов ( .1/2.1/3
  4. Широкая поддержка адаптивного веб-дизайна. В качестве предпочтительного варианта вы можете выбрать «сначала мобильный» или «сначала рабочий стол». Вы также можете определить точки останова для каждого, и каждый из них получает свой собственный набор помощников для интервалов, сетки, видимости и отдельного миксина Sass.

Например:

 $rwd-type: desktop-first;
$rwd-map: (
  'mobile': 680px
); 
$spacing-map: (
  'double': double($spacing-unit)
);

Затем в скомпилированном CSS вы получите доступ к таким классам, как .mobile-1/2.mobile-hidden.mobile-padding-double

  1. Общие стили по умолчанию для текстовых элементов с вертикальным ритмом на основе Gridlover .
  2. Дополнительные модификаторы для других элементов HTML, таких как встроенный список, список меню, изображение круга или таблица зебры.
  3. Различные типы кнопок и три варианта форм: встроенные, сложенные и горизонтальные.
  4. Основные компоненты пользовательского интерфейса, такие как медиа-объект, блок-объект, панель навигации, элемент hero для целевых страниц и липкий нижний колонтитул. Ничего больше.

Будущие надежды на Hocus-Pocus

Моя цель — сделать Hocus-Pocus идеальным стартовым комплектом Sass, независимо от сложности ваших проектов. Таким образом, вы можете сосредоточиться на написании компонентов пользовательского интерфейса проекта и определении вашей темы.

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

Если вы думаете, что фреймворк Hocus-Pocus может быть полезен для вас в будущем проекте, вы можете найти полную документацию на hocus-pocus.io . Код Hocus-Pocus имеет открытый исходный код и доступен на GitHub . Я ценю любые комментарии, отзывы и информацию о потенциальных проблемах.