JavaScript course homework. Document Object Model. Event propagation. Event bubbling. Throttle & Debounce. Lazysizes
Створи галерею з можливістю кліку по її елементах і перегляду повнорозмірного зображення у модальному вікні. Подивися демо відео роботи галереї.
gallery-demo.mp4
Виконуй це завдання у файлах 01-gallery.html
і 01-gallery.js
. Розбий його на декілька підзавдань:
- Створення і рендер розмітки на підставі масиву даних
galleryItems
і наданого шаблону елемента галереї. - Реалізація делегування на
div.gallery
і отриманняurl
великого зображення. - Підключення скрипту і стилів бібліотеки модального вікна basicLightbox. Використовуй CDN сервіс jsdelivr і додай у проект посилання на мініфіковані (
.min
) файли бібліотеки. - Відкриття модального вікна по кліку на елементі галереї. Для цього ознайомся з документацією і прикладами.
- Заміна значення атрибута
src
елемента<img>
в модальному вікні перед відкриттям. Використовуй готову розмітку модального вікна із зображенням з прикладів бібліотеки basicLightbox.
Посилання на оригінальне зображення повинно зберігатися в data-атрибуті source
на елементі <img>
, і вказуватися в href
посилання. Не додавай інші HTML теги або CSS класи, крім тих, що містяться в цьому шаблоні.
<div class="gallery__item">
<a class="gallery__link" href="large-image.jpg">
<img
class="gallery__image"
src="small-image.jpg"
data-source="large-image.jpg"
alt="Image description"
/>
</a>
</div>
Зверни увагу на те, що зображення обгорнуте посиланням, отже по кліку за замовчуванням користувач буде перенаправлений на іншу сторінку. Заборони цю поведінку за замовчуванням.
⚠️ Наступний функціонал не обов'язковий для здавання завдання, але буде хорошою додатковою практикою.
Додай закриття модального вікна після натискання клавіші Escape
. Зроби так, щоб прослуховування клавіатури було тільки доти, доки відкрите модальне вікно. Бібліотекаи basicLightbox містить метод для програмного закриття модального вікна.
Зроби таку саму галерею як в першому завданні, але використовуючи бібліотеку SimpleLightbox, яка візьме на себе обробку кліків по зображеннях, відкриття і закриття модального вікна, а також гортання зображень за допомогою клавіатури.
simplelightbox-demo.mp4
Необхідно трохи змінити розмітку картки галереї, використовуй цей шаблон.
<a class="gallery__item" href="large-image.jpg">
<img class="gallery__image" src="small-image.jpg" alt="Image description" />
</a>
Виконуй це завдання у файлах 02-lightbox.html
і 02-lightbox.js
. Розбий його на декілька підзавдань:
- Створення і рендер розмітки на підставі масиву даних
galleryItems
і наданого шаблону елемента галереї. Використовуй готовий код з першого завдання. - Підключення скрипту і стилів бібліотеки, використовуючи CDN сервіс cdnjs. Необхідно додати посилання на два файли:
simple-lightbox.min.js
іsimple-lightbox.min.css
. - Ініціалізація бібліотеки після створення і додання елементів галереї у
div.gallery
. Для цього ознайомся з документацією SimpleLightbox - насамперед секції «Usage» і «Markup». - Подивися в документації секцію «Options» і додай відображення підписів до зображень з атрибута
alt
. Нехай підпис буде знизу і з'являється через 250 мілісекунд після відкриття зображення.