Аккордеон
Реализуйте библиотеку для создания аккордеонов на сайте.
Основные возможности проекта
- Библиотека для создания аккордеона на сайте.
- Несколько режимов работы (только один открытый, несколько открытых).
- Анимация открытия/закрытия.
- Кастомизация через параметры.
- Публикация на GitHub с документацией.
Функциональность библиотеки
Библиотека должна предоставлять следующие возможности:
- Создание аккордеона из HTML-структуры (списка элементов).
- Поддержка вложенных аккордеонов.
- Настройка поведения: открывать только один элемент или несколько.
- Анимация плавного открытия/закрытия.
- События (onOpen, onClose, onInit).
Режимы работы
Библиотека должна поддерживать два режима:
- Только один открытый - при открытии одного элемента остальные автоматически закрываются.
- Несколько открытых - можно открыть любое количество элементов одновременно.
Параметры настройки
При инициализации аккордеона можно передавать параметры:
- selector - селектор для элементов аккордеона.
- mode - режим работы ("single" или "multiple").
- duration - длительность анимации (в миллисекундах).
- openFirst - открывать ли первый элемент при инициализации.
Использование библиотеки
Пример использования библиотеки:
- Подключить CSS-файл со стилями аккордеона.
- Подключить JS-файл с библиотекой.
- Создать HTML-структуру с элементами аккордеона.
- Инициализировать аккордеон с настройками.
События
Библиотека должна генерировать события:
- onInit - после инициализации аккордеона.
- onOpen - при открытии элемента (передается индекс).
- onClose - при закрытии элемента (передается индекс).
Публикация на GitHub
Библиотека должна быть выложена на GitHub с:
- README.md с описанием и инструкцией по установке.
- Демо-страницей с примерами использования.
- Исходным кодом библиотеки.
Тестирование
Библиотека должна быть протестирована на:
- Разных браузерах (Chrome, Firefox, Safari, Edge).
- Разных устройствах (десктоп, планшет, мобильные).
- Вложенных аккордеонах (аккордеон внутри аккордеона).
Дополнительные возможности
- Возможность открыть/закрыть все элементы программно.
- Поддержка кастомных иконок для открытого/закрытого состояния.
- Документация с примерами кода.