Использование Less
Как переопределять стили UIkit и создавать собственные темы с Less.
UIkit основан на Less. После установки UIkit в вашем распоряжении будут все исходники. Вы можете компилировать их и создавать собственные темы, а затем включать их в сборки Документация по Less на английском или на русском.
Как настраивать
Чтобы начать использовать UIkit и Less, вам нужно скомпилировать исходники Less в CSS. Есть два подхода: настроить собственный процесс сборки или использовать готовые сценарии сборки, включенные в UIkit.
Использование пользовательской сборки
Для начала работы импортируйте основные стили фреймворка (uikit.less
) и тему по умолчанию (uikit.theme.less
) в свой проект. Затем скомпилируйте файлы любым удобным для вас способом. Если вы не знакомы с Less, прочтите официальную документацию Less на английском или на русском.
// Импорт UIkit стандартной темы (или файла uikit.less только со стилями ядра)
@import "node_modules/uikit/src/less/uikit.theme.less";
// Разместите здесь ваш пользовательский код, например, примеси и переменные.
// Раздел с информацией о создании тем будет ниже на этой странице.
Использование готовых сценариев сборки
Для переопределения стилей UIkit можно использовать встроенную сборку для создания кастомизированной версии CSS. Затем все изменения вы сможете добавить в свой проект и больше к этому не возвращаться.
Для включения своей темы на Less в сборку, создайте директорию /custom
и разместите в ней пользовательские файлы.
Внимание Директория /custom
будет добавлена в .gitignore
, чтобы не попасть в репозиторий UIkit. Но вы можете добавить свои наработки из папки /custom
в собственный Git репозиторий. В этом случае ваши темы будут иметь версионность и не мешать основным файлам UIkit.
Создайте файл с именем вида /custom/my-theme.less
(назовите как хочется) и импортируйте файлы ядра (uikit.less
) с применением встроенной темы (uikit.theme.less
) или без нее.
// Импорт UIkit стандартной темы UIkit (или только файл ядра uikit.less с базовыми стилями)
@import "../src/less/uikit.theme.less";
// Разместите здесь ваш пользовательский код, например, примеси и переменные.
// Раздел с информацией о создании тем будет ниже на этой странице.
Для компиляции проекта UIkit и созданной вами темы в CSS, запустите встроенный таск compile
.
# Запустите один раз для установки зависимостей
yarn install
# Компиляция всех исходников, включая пользовательскую тему
yarn compile
# Привычный таск Watch следит за изменениями файлов и компилирует на лету при каждом изменении файла
yarn watch
Сгенерированные файлы размещаются в папке /dist/css
.
Внимание Кастомная тема также доступна в тестовых файлах, просто введите в вашем браузере адрес / test и выберите свою тему в раскрывающемся меню.
Создание собственной темы для UIkit
Мы успешно создали, настроили и умеем компилировать пользовательский код Less. Приступаем к созданию тем. Если вам ранее не приходилось пользоваться Less, документация в помощь. Но прежде ознакомьтесь с нашими рекомендациями.
Использование переменных Less
Перезаписывайте имеющиеся переменные. Откройте переменные интересующего каждого компонента и переопределите их в своей теме.
Например, глобальная переменная цвета ссылок находится в файле /src/less/components/variables.less
:
// Значение по умолчанию
@global-link-color: #4091D2;
Нашли значение, а теперь перезаписываем его в своей теме по адресу /custom/my-theme.less
:
// Новое значение
@global-link-color: #DA7D02;
В процессе компиляции будет создан файл, использующий ваше новое значение. Изменяя глобальные переменные, следует понимать, что они могут использоваться где-то еще. Например, переопределив цвет ссылок глобально, мы увидим новые значения во всех компонентах, использующих ссылки.
Использование хуков
Чтобы избежать оверхеда, мы используем примеси(миксины) из Less, которые подключаем к предопределенным селекторам из исходников UIkit и применяем дополнительные свойства. Селекторы не должны дублироваться во всех файлах. К тому же, глобальные изменения можно сделать проще.
Найдите правило, которое вы хотите дополнить, например, ознакомьтесь с Less файлом какого-либо компонента, например /src/less/components/card.less
изменим стили компонента Card:
// CSS правила
.uk-card {
position: relative;
box-sizing: border-box;
// разрешаем добавление новых свойств
.hook-card;
}
Теперь перейдите в свою тему по адресу /custom/my-theme.less
и добавьте новые стили:
// добавляем новый стиль
.hook-card() { color: #000; }
Расширенные хуки
Если не нашлось нужной переменной или хука, вы также можете создать свой собственный селектор. Для этого используйте .hook-card-misc hook и создайте свой собственный селектор. Это позволит вам сортировать ваши новые селекторы в нужных местах скомпилированного файла CSS. Просто добавьте новые строки в файл своей темы в /custom/my-theme.less
:
// Дополнительная примесь
.hook-card-misc() {
// новое правило
.uk-card a { color: #f00; }
}
Выключить компонент Inverse
Компонент Inverse добавляет стили для инверсии стилей. Если вы не планируете использовать инверсию стилей в своем проекте, просто отключите ее в Less. Для отключение найдите переменную Less color-mode
(например, @card-primary-color-mode
), и задайте ей значение none
.
Пример отключения инверсии:
@inverse-global-color-mode: none;
Еще можно отключить режим инверсии для отдельных компонентов:
// Card
@card-primary-color-mode: none;
@card-secondary-color-mode: none;
// Navbar
@navbar-color-mode: none;
// Off-canvas
@offcanvas-bar-color-mode: none;
// Overlay
@overlay-primary-color-mode: none;
// Section
@section-primary-color-mode: none;
@section-secondary-color-mode: none;
// Tile
@tile-primary-color-mode: none;
@tile-secondary-color-mode: none;
Как правильно структурировать свою тему
В приведенных выше примерах мы добавляли все пользовательские стили в файл /custom/my-theme.less
. Такой подход имеет место быть лишь в случае небольших изменений. Если стилей много, рекомендуем использовать этот файл в качестве точки входа (entry) для компилятора Less. Создайте отдельные файлы и папки для каждого компонента и переопределите стили там. Если у вас нет опыта проектирования архитектуры, используйте в качестве примера структуру проекта UIkit здесь /src/less/uikit.theme.less
.
Внимание В примере мы предполагаем, что вы создаете тему в каталоге /custom
, но это может быть не так. Вы можете использовать собственные пути и настроить кастомный процесс сборки проекта.
custom/
<!-- вставляем входной файл для компилятора Less -->
my-theme.less
<!-- директория для хранения файлов Less -->
my-theme/
<!-- Файл импорта всех компонентов директории -->
_import.less
<!-- отдельный файл кастомизированного компонента -->
accordion.less
alert.less
...
Точки входа для компилятора Less, /custom/my-theme.less
:
// Ядро фреймворка
@import "../../src/less/uikit.less";
// Тема
@import "my-theme/_import.less";
В папке вашей темы лежит один файл, который импортирует элементы дочерних папок custom/my-theme/_import.less
:
@import "accordion.less";
@import "alert.less";
// ...
Внимание С помощью этой настройки вы можете удалить операторы импорта компонентов, которые вы использовать не планируете. Это уменьшит выходной CSS файл. Убедитесь в правильности порядка импорта, как указано в src/less/components/_import.less.