- Migrated all 28 CSS components to SCSS architecture
- Deleted 29 source CSS files (kept only compiled app.css & bootstrap-custom.css)
- Created 30 SCSS component modules in scss/components/
- Cleaned 24 templates from duplicate CSS links
- Updated main.scss with new imports (layout-spacing, spacing-utils, rightbar-calendar)
- Filled empty _navbar.scss with content
- Refactored css/ folder: removed obsolete files, updated README.md
- Created comprehensive documentation (migration complete, quick reference, reports)
Migration Statistics:
- Components migrated: 28 (~4,768 lines SCSS)
- CSS files deleted: 29
- Templates cleaned: 24
- app.css size: 95 KB (compiled from SCSS)
- bootstrap-custom.css: 301 KB
- Total: 396 KB
Phase 6 Complete: 100% SCSS architecture achieved ✅
8.1 KiB
8.1 KiB
Документация: Компонент Buttons
Обзор
Расширенная система кнопок, дополняющая стандартные кнопки Bootstrap дополнительными вариантами и утилитами.
Классы кнопок
1. Круглые кнопки (.btn-circle)
Идеально круглые кнопки для иконок. Автоматически становятся квадратными с border-radius: 50%.
Базовое использование
<button class="btn btn-primary btn-circle">
<i class="bi-plus"></i>
</button>
<button class="btn btn-outline-secondary btn-circle">
<i class="bi-funnel"></i>
</button>
Размеры
<!-- Маленькая: 32x32px -->
<button class="btn btn-primary btn-circle btn-sm">
<i class="bi-heart"></i>
</button>
<!-- Средняя (по умолчанию): 36x36px -->
<button class="btn btn-primary btn-circle">
<i class="bi-star"></i>
</button>
<!-- Большая: 44x44px -->
<button class="btn btn-primary btn-circle btn-lg">
<i class="bi-search"></i>
</button>
Или используйте специальные классы:
<button class="btn btn-primary btn-circle-sm">...</button>
<button class="btn btn-primary btn-circle-md">...</button>
<button class="btn btn-primary btn-circle-lg">...</button>
Состояния
Toggle-кнопки автоматически вращаются при раскрытии:
<button class="btn btn-outline-secondary btn-circle"
data-bs-toggle="collapse"
data-bs-target="#filters"
aria-expanded="false">
<i class="bi-funnel"></i>
</button>
<!-- При aria-expanded="true" кнопка повернется на 180° -->
2. Кнопки с иконками (.btn-icon)
Кнопки с иконкой и текстом. На мобильных устройствах текст скрывается.
<button class="btn btn-primary btn-icon">
<i class="bi-plus-lg"></i>
<span class="btn-text">Создать</span>
</button>
<a href="/create" class="btn btn-success btn-icon">
<i class="bi-file-plus"></i>
<span class="btn-text">Новый документ</span>
</a>
Поведение:
- Десктоп: иконка + текст
- Мобильные (< 768px): только иконка (круглая кнопка)
3. Кнопки-призраки (.btn-ghost)
Прозрачные кнопки без фона, появляется фон при наведении.
<button class="btn btn-ghost">
<i class="bi-pencil"></i>
Редактировать
</button>
<button class="btn btn-ghost btn-circle">
<i class="bi-three-dots"></i>
</button>
4. Pill-кнопки (.btn-pill)
Максимально скругленные кнопки (border-radius: 999px).
<button class="btn btn-primary btn-pill">
Подписаться
</button>
<a href="/more" class="btn btn-outline-secondary btn-pill">
Узнать больше
</a>
Группы кнопок
Группа круглых кнопок
<div class="btn-circle-group">
<button class="btn btn-outline-secondary btn-circle">
<i class="bi-funnel"></i>
</button>
<button class="btn btn-outline-secondary btn-circle">
<i class="bi-sort-down"></i>
</button>
<button class="btn btn-primary btn-circle">
<i class="bi-plus"></i>
</button>
</div>
Примеры использования
Пример 1: Шапка страницы с фильтрами
<div class="d-flex align-items-center gap-2">
<h1>Сотрудники</h1>
<div class="ms-auto d-flex gap-2">
<!-- Поиск -->
<input type="search" class="form-control" placeholder="Поиск...">
<!-- Кнопка фильтров -->
<button class="btn btn-outline-secondary btn-circle"
data-bs-toggle="collapse"
data-bs-target="#filters">
<i class="bi-funnel"></i>
</button>
<!-- Кнопка создания -->
<button class="btn btn-primary btn-icon">
<i class="bi-plus-lg"></i>
<span class="btn-text">Создать</span>
</button>
</div>
</div>
Пример 2: Карточка с действиями
<div class="card">
<div class="card-body">
<h5>Название документа</h5>
<p>Описание...</p>
<div class="btn-circle-group">
<button class="btn btn-ghost btn-circle" title="Редактировать">
<i class="bi-pencil"></i>
</button>
<button class="btn btn-ghost btn-circle" title="Поделиться">
<i class="bi-share"></i>
</button>
<button class="btn btn-ghost btn-circle" title="Удалить">
<i class="bi-trash"></i>
</button>
</div>
</div>
</div>
Пример 3: Навигация с разными размерами
<div class="d-flex align-items-center gap-3">
<!-- Маленькие кнопки для вспомогательных действий -->
<button class="btn btn-outline-secondary btn-circle btn-sm">
<i class="bi-arrow-left"></i>
</button>
<!-- Обычная кнопка для основного действия -->
<button class="btn btn-primary btn-pill">
Далее
</button>
<!-- Маленькая кнопка справа -->
<button class="btn btn-outline-secondary btn-circle btn-sm">
<i class="bi-arrow-right"></i>
</button>
</div>
Комбинирование с Bootstrap
Все новые классы полностью совместимы со стандартными классами Bootstrap:
<!-- Цвета Bootstrap -->
<button class="btn btn-primary btn-circle">...</button>
<button class="btn btn-success btn-circle">...</button>
<button class="btn btn-danger btn-circle">...</button>
<button class="btn btn-outline-secondary btn-circle">...</button>
<!-- Размеры Bootstrap + круглые кнопки -->
<button class="btn btn-primary btn-circle btn-sm">...</button>
<button class="btn btn-primary btn-circle btn-lg">...</button>
<!-- Состояния Bootstrap -->
<button class="btn btn-primary btn-circle" disabled>...</button>
<button class="btn btn-outline-secondary btn-circle active">...</button>
Миграция со старого кода
Было (специфичные стили):
<button class="btn btn-outline-secondary page-filter-toggle">
<i class="bi-funnel"></i>
</button>
.page-filter-toggle {
width: 36px !important;
height: 36px !important;
border-radius: 50% !important;
/* ... еще 20 строк CSS ... */
}
Стало (универсальный класс):
<button class="btn btn-outline-secondary btn-circle">
<i class="bi-funnel"></i>
</button>
/* Никаких дополнительных стилей не нужно! */
CSS переменные
Компонент использует стандартные переменные Bootstrap:
--bs-primary- основной цвет--bs-body-color- цвет текста--bs-border-color- цвет границ--bs-border-radius- скругление углов
Поддержка темной темы
Все кнопки автоматически адаптируются под темную тему через prefers-color-scheme: dark.
Доступность
- Все кнопки имеют правильные
aria-labelатрибуты - Иконки используют
line-height: 1для правильного центрирования - Фокус-стейты наследуются от Bootstrap
- Поддержка клавиатурной навигации
Производительность
- Минимальное использование
!important(только где абсолютно необходимо) - CSS переменные для легкой кастомизации
- Оптимизированные селекторы
- Не влияет на другие компоненты