- Заменен лишний div.container на стандартный container для единообразия - Заменен класс .card на .ios-card в секции активности для устранения конфликтов стилей - Добавлен card-list.css в base.html для корректного отображения карточек новостей - Добавлены CSS правила для правильного поведения .row и колонок в grid-layout - Исправлена проблема с выходом календаря за границы страницы - Убраны видимые скроллбары у modal-body и modal-content для чистого UI
7.4 KiB
Bootstrap Card Integration - Summary
Дата: 29 ноября 2024
Контекст: Решение конфликта между кастомными .card классами и нативными Bootstrap классами
Проблема
После переименования feed-* классов в card-* для универсализации компонентов, возникли конфликты с нативными Bootstrap классами:
- Bootstrap имеет встроенный компонент
.cardс собственными стилями - Bootstrap
.card-header,.card-body,.card-titleпереопределяли кастомные стили - Изменились цвета, отступы, границы карточек
Решение
Вместо дальнейшего переименования классов (например, lc-card, list-card), было принято решение интегрироваться с Bootstrap и переопределить его стили под наш дизайн.
Что сделано
-
Переопределены Bootstrap переменные в
scss/custom-bootstrap.scss:$card-border-radius: 18px; $card-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); $card-cap-padding-y: 1rem; $card-cap-padding-x: 1rem; -
Добавлены кастомные расширения Bootstrap карточек в
custom-bootstrap.scss:.card- добавлены тени, анимации, hover-эффекты.card-header- переопределен flex-layout.card-icon- кастомный класс для аватаров (42px круг).card-meta- кастомный класс для метаинформации.card-actions- кастомный класс для кнопок.card-list- кастомный класс для контейнера списка.section-header- кастомный класс для заголовков секций- Вариации:
.card.compact,.card.borderless,.card.highlighted
-
Создан
feed-specific.cssдля постов:- Выделены классы, используемые только в постах:
.feed-pin- значок закрепления.feed-title- заголовок поста.feed-text- текст поста.feed-img- изображение поста.feed-action- кнопки действий.feed-footer- футер поста
- Выделены классы, используемые только в постах:
-
Удалены устаревшие файлы:
- ❌
card-list.css- стили перенесены вbootstrap-custom.css - ❌
request-list.css- был уже пустым
- ❌
-
Обновлены импорты в шаблонах:
- Удалены импорты
card-list.cssиз всех шаблонов (8 файлов) - Добавлен импорт
feed-specific.cssвfeed_list.html base.htmlбольше не импортируетcard-list.css
- Удалены импорты
-
Обновлена документация:
static/css/README.md- новая архитектура и зависимостиstatic/css/components/index.css- обновлен импорт
Архитектура после рефакторинга
variables.css (CSS переменные)
↓
bootstrap-custom.css (Bootstrap + переопределения .card)
↓
common.css (общие классы)
↓
├── feed-specific.css (только для постов)
├── ios-components.css
├── document-list.css
├── employee-list.css
└── другие компоненты
Преимущества решения
✅ Соответствие стандартам: Используем нативные Bootstrap классы
✅ Меньше кода: Один источник стилей вместо дублирования
✅ Знакомая структура: Разработчики знают Bootstrap
✅ Легче поддержка: Стандартная документация Bootstrap применима
✅ Меньше конфликтов: Работаем с Bootstrap, а не против него
Используемые классы
Универсальные (для всех карточек)
.card- базовая карточка.card-header- шапка.card-body- тело.card-title- заголовок.card-subtitle- подзаголовок.card-icon- аватар/иконка (кастомный).card-meta- метаинформация (кастомный).card-actions- кнопки действий (кастомный).card-list- контейнер списка (кастомный).section-header- заголовок секции (кастомный)
Специфичные для постов
.feed-pin- значок закрепления.feed-title- заголовок поста.feed-text- текст поста.feed-img- изображение.feed-action- кнопка действия.feed-footer- футер
Файлы
Добавлены
- ✅
static/css/components/feed-specific.css(2.5KB)
Изменены
- 📝
static/scss/custom-bootstrap.scss- добавлены переопределения карточек - 📝
static/css/bootstrap-custom.css- перекомпилирован - 📝
static/css/components/index.css- обновлены импорты - 📝
static/css/README.md- обновлена документация - 📝 8 HTML шаблонов - удалены импорты
card-list.css - 📝
templates/base.html- удален импортcard-list.css - 📝
templates/feed/feed_list.html- добавлен импортfeed-specific.css
Удалены
- ❌
static/css/components/card-list.css(7.8KB) - ❌
static/css/components/request-list.css(0.5KB)
Команды выполнения
# Компиляция SCSS
cd backend/static
npm run build:css
# Сборка статики
cd backend
python manage.py collectstatic --noinput
Результат
- ✅ Компиляция SCSS: успешно (5 warnings о deprecated функциях Bootstrap - это нормально)
- ✅ Сборка статики: 5 файлов обновлено, 990 без изменений
- ✅ Размер: удалено 8.3KB CSS, добавлено 2.5KB = -5.8KB
- ✅ Визуальное соответствие: карточки выглядят как задумано
- ✅ Bootstrap интеграция: нативные классы Bootstrap работают с кастомными стилями
Следующие шаги
-
Протестировать все страницы с карточками:
- ✅ Лента новостей (
/feed/) - ⏳ Заявления (
/requests/) - ⏳ Документы (
/documents/) - ⏳ Сотрудники (
/employees/) - ⏳ Отделы (
/employees/departments/) - ⏳ Чаты (
/communications/) - ⏳ Поиск (
/search/)
- ✅ Лента новостей (
-
Проверить адаптивность на мобильных устройствах
-
Обновить остальную документацию при необходимости