День 27 JavaScript 30 Веса Боса включал настройку функции щелчка и перетаскивания для прокрутки нескольких элементов div по горизонтали в окне просмотра.

HTML и CSS создали серию из 23 элементов div в виде слайдера. Элементы div будут слегка трансформироваться при нажатии для получения приятного эффекта.

Мы устанавливаем несколько переменных.

const slider = document.querySelector('.items');
let isDown = false;
let startX;
let scrollLeft;

Затем мы добавили прослушиватели событий с функциями. Mousedown активировал ползунок.

slider.addEventListener('mousedown', (e) => {
  isDown = true;
  slider.classList.add('active');
  startX = e.pageX - slider.offsetLeft;
  scrollLeft = slider.scrollLeft;
});

MouseLeave отключил ползунок.

slider.addEventListener('mouseleave', () => {
   isDown = false;
   slider.classList.remove('active');
});

Mouseup также выключил ползунок.

slider.addEventListener('mouseup', () => {
  isDown = false;
  slider.classList.remove('active');
});

А mousemove заставляет ползунок прокручиваться влево.

slider.addEventListener('mousemove', (e) => {
   if(!isDown) return; //stop fn from running
   e.preventDefault();
   const x = e.pageX - slider.offsetLeft;
   const walk = (x - startX) * 3; // *3 to move faster
   slider.scrollLeft = scrollLeft - walk;
});

Мне все еще неудобно работать со смещениями и позиционированием. Мне нужно будет использовать их в других программах, чтобы стать лучше.

Следите за моими учебными заметками по мере того, как я продвигаюсь по JavaScript 30.