Напълно отзивчив; Мобилен и настолен компютър; Навигация с бутони, колелца и докосване.

Това е втора фаза на двуфазен проект, в който изграждаме напълно адаптивна въртележка с изображения за мобилни устройства и настолни компютри.

Първа фаза може да бъде намерена тук.

Разгледайте нашите курсове за обучение.

Имаме 4 големи задачи под ръка.

  1. ТЪЧ навигация.
  2. Навигация с БУТОНИ.
  3. WHEEL навигация.
  4. Функция за връщане назад.

Основата за ЦЯЛАТА навигация е тази част от кода тук:

for (let i = 0; i < images.children.length; i++) {
 updated_position = last_positions[i] + difference;
 images.children[i].style.left = `${updated_position}px`;
 last_positions[i] = updated_position;
}

Това, което казва, е следното:
Вземете текущата позиция на всички изображения — къде са те по оста X?; добавете някаква разлика, която ще ги премести на нова позиция.

Имаме масив last_positions, за да следим къде са нашите изображения на екрана.

Нека кодираме TOUCH навигацията.

Загрижени сме за три слушатели на събития с докосване.

  1. touchstart’ — Когато потребителят за първи път докосне въртележката, ние записваме X-координатата в променлива.
  2. touchmove’ — Когато потребителят премести пръста си през тази въртележка, ние изчисляваме разликата между текущата X-координата и записаната X-координата в стъпка 1.
  3. touchend’ — Когато потребителят пусне пръста си от въртележката, извикваме функция за повторно подравняване на нашата въртележка или SNAP, нашата въртележка обратно към активна карта.

Така че разликата в този случай би била:

const current_touch_position = event.changedTouches[0].screenX;
difference = current_touch_position — start_touch_position;

Нека кодираме навигацията с БУТОНИ.

Много просто.

Преместваме изображенията наляво или надясно една цяла ширина на картата.
Това прави нашата разлика просто равна на ширината на една карта.

…
difference = new_width;
updated_position = last_positions[i] + difference;
images.children[i].style.transitionDuration = ‘0.5s’;
images.children[i].style.left = `${updated_position}px`;
last_positions[i] = updated_position;

Нека кодираме навигацията WHEEL.

Отново, много просто.

DeltaY на нашето колело на мишката ни дава „разстоянието“ (наистина промяна в Y-координатата), което потребителят е превъртял.

Това прави нашата разлика просто равна на това колко далеч потребителят превърта нагоре или надолу.

…
difference = event.deltaY;
updated_position = last_positions[i] — difference;
images.children[i].style.left = `${updated_position}px`;
last_positions[i] = updated_position;

Функцията SNAP-BACK е малко сложна.

Мисълта зад това е следната:

Нашата точка на прихващане е лявата граница на нашия изглед.

Която и x-стойност на изображението да е най-близка до тази точка, става нашето активно изображение.

Ние изчисляваме необходимите пиксели, за да преместим нашето активно изображение до тази точка и да преместим всички изображения с това количество.

В резултат нашата въртележка се центрира отново.

Има много по-фини точки за завършване на този Ultimate JavaScript Image Slider.

Вижте видео урока по-долу за много по-подробни инструкции.

Можете да получите изходните файлове тук.

Ако желаете по-задълбочено ръководство, вижте моя пълен видео урок в YouTube, Обектът е A.

Най-добрата въртележка/плъзгач за изображения на JavaScript | Фаза 2