День 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.