Tom Sel ect требует подключения таблиц стилей для корректного отображения интерфейса: выпадающего списка, выбранных элементов, состояний навигации и анимаций. Без CSS-базы компонент остаётся функциональным, но визуально представляет собой неоформленный список HTML-элементов.
Основной файл стилей содержит всю структуру визуального компонента: контейнеры, элементы списка, состояния активности, скролл, подсветку выбранных значений.
Наиболее распространённый файл:
tom-select.css — полный набор стандартных стилейtom-select.default.css — базовая тема оформленияПри подключении через CDN используется минимальная конфигурация:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tom-select/dist/css/tom-select.css">
Подключение этого файла обеспечивает готовый внешний вид без дополнительной настройки.
При установке через пакетный менеджер стили становятся частью
зависимости и подключаются напрямую из node_modules.
Установка пакета:
npm install tom-select
Подключение в JavaScript-сборках:
import 'tom-select/dist/css/tom-select.css';
import TomSelect fr om 'tom-select';
Такой способ обеспечивает синхронизацию версий JavaScript и CSS, исключая несовместимости.
При использовании систем сборки (Webpack, Vite, Rollup) CSS-файл обрабатывается как модуль.
Пример для Vite/Webpack:
import 'tom-select/dist/css/tom-select.css';
Сборщик автоматически включает стили в итоговый бандл или выносит их в отдельный файл в зависимости от конфигурации.
При использовании PostCSS возможно дополнительное преобразование, включая автопрефиксы и оптимизацию.
Для production-сборок используется минифицированная версия:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tom-select/dist/css/tom-select.min.css">
Минифицированный файл уменьшает объём загрузки и ускоряет первичное отображение интерфейса.
Стили Tom Select построены на классовой системе без глобальных зависимостей. Основные классы:
.ts-wrapper — корневой контейнер.ts-control — поле ввода и выбранные элементы.ts-dropdown — выпадающий список.ts-item — элемент списка.active — активное состояние элемента.selected — выбранный элементТакая структура позволяет переопределять отдельные части без влияния на остальные компоненты.
CSS Tom Select должен подключаться до пользовательских переопределений. При обратном порядке стандартные стили могут перекрыть кастомные правила.
Рекомендуемая схема:
<link rel="stylesheet" href="tom-select.css">
<link rel="stylesheet" href="custom.css">
При использовании сборщиков аналогичный принцип сохраняется через порядок импортов.
Стили допускают полную переработку визуальной части через переопределение классов или использование CSS-переменных.
Наиболее частые направления кастомизации:
Пример переопределения:
.ts-control {
border-radius: 6px;
border: 1px solid #ccc;
}
.ts-dropdown {
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
В современных конфигурациях поддерживается использование переменных для упрощения темизации:
:root {
--ts-border-radius: 6px;
--ts-border-color: #ddd;
--ts-dropdown-bg: #fff;
}
Дальнейшее переопределение осуществляется через изменение значений переменных без переписывания структуры классов.
При интеграции в тёмные интерфейсы требуется отдельный слой переопределений:
.dark .ts-control {
background-color: #1e1e1e;
color: #fff;
border-color: #333;
}
.dark .ts-dropdown {
background-color: #1e1e1e;
color: #fff;
}
Подобный подход позволяет адаптировать компонент под системные темы без модификации исходных файлов.
Tom Select не использует глобальные селекторы, что снижает риск конфликтов с другими UI-библиотеками. Все стили ограничены классом-обёрткой и вложенными элементами.
Пример изоляции:
.tom-select .ts-control {
font-size: 14px;
}
Такой подход позволяет безопасно использовать компонент в сложных интерфейсах с большим количеством библиотек.
Несмотря на отсутствие строгого BEM, структура классов допускает интеграцию с BEM-архитектурой:
.form__select .ts-control {
min-height: 42px;
}
Это обеспечивает совместимость с существующими дизайн-системами.
При больших проектах применяется стратегия разделения стилей:
Дополнительно используется критический CSS для ускорения первичного рендера.
Некорректное отображение интерфейса обычно связано с:
tom-select.cssВ системах сборки особенно критичен порядок импорта CSS-модулей, так как он влияет на каскадность итогового файла.
При использовании языков с направлением справа налево требуется дополнительный CSS-слой:
[dir="rtl"] .ts-control {
text-align: right;
}
Подобные правила обеспечивают корректное отображение интерфейса без изменения логики компонента.