Last active
July 20, 2018 22:53
-
-
Save luxplanjay/7620616b44a4f3531735cfa6297a9a37 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Создайте компонент галлереи изображений следующего вида. | |
<div class="image-gallery js-image-gallery"> | |
<div class="fullview"> | |
<!-- Если выбран первый элемент из preview --> | |
<img src="img/fullview-1.jpeg" alt="alt text 1"> | |
</div> | |
<!-- li будет столько, сколько объектов в массиве картинок. Эти 3 для примера --> | |
<ul class="preview"> | |
<li><img src="img/preview-1.jpeg" data-fullview="img/fullview-1.jpeg" alt="alt text 1"></li> | |
<li><img src="img/preview-2.jpeg" data-fullview="img/fullview-2.jpeg" alt="alt text 2"></li> | |
<li><img src="img/preview-3.jpeg" data-fullview="img/fullview-3.jpeg" alt="alt text 3"></li> | |
</ul> | |
</div> | |
🔔 Превью компонента: https://monosnap.com/file/5rVeRM8RYD6Wq2Nangp7E4TkroXZx2 | |
Реализуйте функционал: | |
- image-gallery есть изначально в HTML-разметке как контейнер для компонента. | |
- fullview содержит в себе увеличенную версию выбранного изображения из preview, и | |
создается динамически при загрузке страницы. | |
- preview это список маленьких изображений, обратите внимание на атрибут data-fullview, | |
он содержит ссылку на большое изображение. preview и его элементы, также создаются | |
динамически, при загрузке страницы. | |
- При клике в элемент preview, необходимо подменить src тега img внутри fullview | |
на url из data-атрибута выбраного элемента. | |
- По умолчанию, при загрузке страницы, активным должен быть первый элемент preview. | |
- Изображений может быть произвольное количество. | |
- Используйте делегирование для элементов preview. | |
- При клике, выбраный элемент из preview должен получать произвольный эффект выделения. | |
- CSS-оформление и имена классов на свой вкус. | |
🔔 Изображения маленькие и большие можно взять с сервиса https://www.pexels.com/, выбрав при скачивании | |
размер. Пусть маленькие изображения для preview будут 320px по ширине, большие для fullview 1280px. | |
Подберите изображения одинаковых пропорций. | |
*/ | |
/* | |
Массив объектов с данными для создания компонента выглядит следующим образом. | |
Замените пути на соотвествующие вашим, или назовите изображения аналогично. | |
*/ | |
const galleryItems = [ | |
{ preview: 'img/preview-1.jpeg', fullview: 'img/fullview-1.jpeg', alt: "alt text 1" }, | |
{ preview: 'img/preview-2.jpeg', fullview: 'img/fullview-2.jpeg', alt: "alt text 2" }, | |
{ preview: 'img/preview-3.jpeg', fullview: 'img/fullview-3.jpeg', alt: "alt text 3" }, | |
{ preview: 'img/preview-4.jpeg', fullview: 'img/fullview-4.jpeg', alt: "alt text 4" }, | |
{ preview: 'img/preview-5.jpeg', fullview: 'img/fullview-5.jpeg', alt: "alt text 5" }, | |
{ preview: 'img/preview-6.jpeg', fullview: 'img/fullview-6.jpeg', alt: "alt text 6" }, | |
]; | |
/* | |
⚠️ ЗАДАНИЕ ПОВЫШЕННОЙ СЛОЖНОСТИ - ВЫПОЛНЯТЬ ПО ЖЕЛАНИЮ | |
Создайте плагин галлереи используя ES6 класс. Добавьте поля и методы класса так, | |
чтобы можно было создать любое количество галлерей на странице. Функционал плагина | |
аналогичный заданию выше. | |
При создании экземпляра конструктор получает: | |
- items - список элементов для preview | |
- parentNode - ссылку на DOM-узел в который будут помещены fullview и preview | |
- defaultActiveItem - номер активного элемента preview по умолчанию | |
Тогда создание экземпляра будет выглядеть следующим образом. | |
*/ | |
new Gallery({ | |
items: galleryItems, | |
parentNode: document.querySelector('.image-gallery'), | |
defaultActiveItem: 1 | |
}); | |
/* Далее плагин работает в автономном режиме */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment