javascript42
Главная
Все учебники
Блог
Учебник BasicLightbox
Введение
Что такое BasicLightbox
История создания и развитие библиотеки
Философия и архитектурные решения
Сравнение с альтернативными решениями
Системные требования и совместимость
Структура документации
Установка и начальная настройка
Установка через npm
Установка через yarn
Подключение через CDN
Ручная установка из исходников
Проверка корректности установки
Подключение в проекте на чистом JavaScript
Интеграция с webpack
Интеграция с Rollup
Интеграция с Parcel
Настройка в TypeScript-проектах
Базовые концепции
Понятие модального окна в контексте библиотеки
Жизненный цикл экземпляра lightbox
Архитектура библиотеки
API и его структура
Принципы работы с DOM
Обработка событий
Управление z-index и наложениями
Создание простого lightbox
Минимальный рабочий пример
Метод basicLightbox.create()
Передача HTML-контента
Передача текстового контента
Работа с template-элементами
Динамическое формирование контента
Методы show() и close()
Особенности первого отображения
Работа с изображениями
Отображение одиночного изображения
Предзагрузка изображений
Адаптивные изображения
Поддержка srcset и sizes
Lazy loading в lightbox
Оптимизация производительности при загрузке
Работа с SVG-изображениями
Отображение изображений высокого разрешения
Работа с видео
Встраивание HTML5 видео
Интеграция с YouTube
Интеграция с Vimeo
Автовоспроизведение видео
Управление звуком
Полноэкранный режим видео
Остановка воспроизведения при закрытии
Работа с субтитрами
Потоковое видео и стриминг
Работа с iframe
Встраивание внешних страниц
Настройка размеров iframe
Безопасность и sandbox-атрибуты
Обмен сообщениями с iframe
Обработка ошибок загрузки
Адаптивность iframe-контента
Кросс-доменные ограничения
Стилизация и оформление
Базовая структура CSS
Переопределение стандартных стилей
Кастомизация оверлея
Оформление контейнера контента
Создание собственных тем
Анимации открытия и закрытия
Использование CSS-переменных
Адаптивный дизайн lightbox
Темная и светлая темы
Работа с z-index в сложных интерфейсах
Методы экземпляра
show() - отображение lightbox
close() - закрытие lightbox
visible() - проверка видимости
element() - получение DOM-элемента
Цепочки вызовов методов
Проверка состояния экземпляра
Уничтожение экземпляра
События и колбэки
Событие onCreate
Событие onShow
Событие onClose
Порядок выполнения колбэков
Передача данных в колбэки
Контекст выполнения this
Асинхронные колбэки
Отмена действий через события
Обработка ошибок в колбэках
Опции конфигурации
Структура объекта опций
closable - управление закрытием
className - дополнительные CSS-классы
onShow - колбэк при открытии
onClose - колбэк при закрытии
Передача опций при создании
Значения по умолчанию
Приоритет опций
Валидация параметров
Управление закрытием
Закрытие по клику на оверлей
Закрытие по клавише Escape
Программное закрытие
Отключение возможности закрытия
Подтверждение перед закрытием
Таймауты автозакрытия
Закрытие с анимацией
Очистка ресурсов при закрытии
Работа с формами
Размещение форм внутри lightbox
Обработка отправки формы
Валидация данных
Отображение ошибок валидации
Работа с файловыми полями
Многошаговые формы
Сохранение состояния формы
Закрытие после успешной отправки
Галереи изображений
Создание простой галереи
Навигация между изображениями
Индикатор текущей позиции
Предзагрузка соседних изображений
Бесконечная прокрутка галереи
Миниатюры в галерее
Управление с клавиатуры
Свайп-жесты на мобильных
Адаптивная галерея
Доступность
Семантическая разметка
ARIA-атрибуты
Управление фокусом
Ловушка фокуса внутри lightbox
Навигация с клавиатуры
Поддержка скринридеров
Альтернативный текст для медиа
Контрастность и читаемость
Анонсы для вспомогательных технологий
Адаптивность и мобильные устройства
Медиазапросы для lightbox
Touch-события
Жесты смахивания
Масштабирование на мобильных
Ориентация экрана
Полноэкранный режим на мобильных
Производительность на слабых устройствах
Работа с виртуальной клавиатурой
Тестирование на различных устройствах
Производительность
Оптимизация DOM-манипуляций
Ленивая загрузка контента
Управление памятью
Профилирование и отладка
Минимизация перерисовок
Оптимизация анимаций
Работа с большими объемами контента
Виртуализация списков
Debounce и throttle
Интеграция с фреймворками
Использование в React
Хуки для React
Использование в Vue.js
Композиция в Vue 3
Использование в Angular
Использование в Svelte
Общие паттерны интеграции
Управление состоянием в SPA
SSR и BasicLightbox
Расширенные техники
Вложенные lightbox
Множественные экземпляры
Очереди показа
Динамическое изменение контента
Программное управление анимациями
Кастомные обработчики событий DOM
Интеграция с роутингом
История браузера и lightbox
Шаринг через URL
Безопасность
XSS и санитизация контента
Content Security Policy
Безопасная работа с пользовательским контентом
Защита от clickjacking
HTTPS и смешанный контент
Валидация источников медиа
Безопасность iframe
Аудит зависимостей
Тестирование
Юнит-тестирование функциональности
Интеграционное тестирование
E2E тестирование
Тестирование доступности
Визуальное регрессионное тестирование
Тестирование на различных браузерах
Мокирование зависимостей
Покрытие кода тестами
Автоматизация тестирования
Отладка и решение проблем
Типичные ошибки и их решения
Конфликты CSS
Проблемы с z-index
Утечки памяти
Проблемы производительности
Несовместимость браузеров
Отладка событий
Логирование и трассировка
Миграция и обновления
Обновление версий библиотеки
Breaking changes между версиями
Стратегии миграции кода
Тестирование после обновления
Откат к предыдущей версии
Параллельная работа версий
Лучшие практики
Архитектурные паттерны
Организация кода
Переиспользование компонентов
Управление зависимостями
Оптимизация bundle size
Кеширование и производительность
Мониторинг в продакшене
Альтернативы и экосистема
Fancybox
PhotoSwipe
Критерии выбора библиотеки
Комбинирование с другими инструментами
Расширения и плагины