В SvelteKit компоненты стилизуются на нескольких уровнях: через
локальные стили, глобальные стили,
CSS-переменные, а также через специализированные UI-библиотеки,
обеспечивающие готовые темы и компоненты. Локальные стили описываются
прямо внутри с атрибутом
lang="css" или lang="scss" для препроцессоров.
Например:
Ключевое преимущество такого подхода — скоупинг стилей. Svelte автоматически добавляет уникальные идентификаторы к классам и селекторам, предотвращая конфликты между компонентами.
Для общих тем или переменных удобно подключать глобальные стили через
app.css или app.scss, которые импортируются в
src/routes/+layout.svelte:
:root {
--primary-color: #1e90ff;
--secondary-color: #ff6347;
--border-radius: 6px;
--transition-speed: 0.3s;
}
body {
font-family: 'Inter', sans-serif;
margin: 0;
}
В компонентах можно применять эти переменные напрямую:
Такой подход облегчает централизованное управление темами и упрощает поддержку проекта при изменении дизайна.
SvelteKit UI-библиотеки часто используют CSS-переменные для динамической смены темы. Например, переключение между светлой и тёмной темой реализуется через контекст:
Использование setContext и getContext
позволяет передавать тему глубоко в дерево компонентов,
не прокидывая пропсы вручную.
Популярные SvelteKit UI-библиотеки, такие как Svelte Material UI, Skeleton UI или Flowbite Svelte, предоставляют набор готовых компонентов с встроенной поддержкой тем. Основные принципы работы с ними:
:root {
--smui-primary: #1e90ff;
--smui-secondary: #ff6347;
}
Композиция стилей: можно сочетать глобальные CSS-переменные, локальные стили и props библиотеки для точной настройки внешнего вида.
Тёмная/светлая тема: большинство UI-библиотек
поддерживают переключение через глобальные классы (dark,
light) или через специальные props
(theme="dark").
В SvelteKit можно менять стили реактивно, используя переменные и биндинги классов:
Контент
Такой подход позволяет создавать интерактивные компоненты, где внешний вид напрямую зависит от состояния.
SvelteKit UI библиотеки часто поддерживают адаптивные пропсы и медиазапросы:
Содержимое
Использование медиазапросов и CSS-переменных позволяет гибко управлять дизайном под различные разрешения экранов.
Skeleton UI предоставляет готовые темы и переменные, что упрощает поддержание единого стиля проекта:
Можно комбинировать локальные стили, глобальные переменные и props компонентов, создавая сложные и кастомизированные интерфейсы с минимальным количеством кода.