Я пытаюсь сделать функцию для своего веб-сайта, которая позволяет пользователю горизонтально прокручивать содержимое div с помощью mousemove и touchmove событий (это похоже на Apple AppStore any app Screenshots section). Я делаю это, устанавливая отрицательное свойство margin-left для первого ребенка. Все работает, за исключением того, что когда пользователь на мобильном устройстве касается экрана или на рабочем столе, перемещает курсор в родительский div, контент не прокручивается с того места, где он сейчас находится, но он «прыгает». Я попытался сделать это, добавив текущее значение margin-left к новому значению pageX, но оно не работает. Что я делаю неправильно? Или, возможно, невозможно сделать эту функцию таким образом?Мышь и касание горизонтального div скольжения
код JS/Babel:
class Collage {
constructor(selector) {
this.selector = $(selector);
this.children = this.selector.children(':first-child');
this.selector.on('mousemove touchmove', this.onMove.bind(this));
}
onMove(event) {
const marginLeft = parseFloat(this.children.css('margin-left'));
let mouseX = event.pageX || -event.touches[0].pageX || -event.changedTouches[0].pageX;
const margin = calculateMargin(mouseX, 1);
this.children.css('margin-left', margin);
function calculateMargin(value, speed) {
let val = -value*speed;
return val <= 0 ? val : 0;
}
}
}
код SCSS:
.collage {
overflow: hidden;
max-height: 300px;
white-space: nowrap;
font-size: 0;
img {
display: inline-block;
&:first-of-type {
margin-left: -20%;
}
}
}
Мои fiddle
Заранее спасибо за ваши ответы.