Сергей Сунцев, Снизу слайдера есть ползунок, который перемещается механизмом drag and drop. Т.е. я нажимаю на него, он закрепляется, а когда двигаю высчитывается индекс в процентах, и по этому индексу двигается сам слайдер. Вот код(Эта функция выполняется, когда мышь зажата на ползунке(slider - англ.)):
// scrollBar - полоса прокрутки
// slider - ползунок
// container - контейнер статей
document.onmousemove = function(e) {
let newLeft = e.pageX - scrollbarCoords.left - shiftX;
if (newLeft < "0") {
newLeft = "0"
};
if (newLeft > scrollbar.offsetWidth - slider.offsetWidth) {
newLeft = scrollbar.offsetWidth - slider.offsetWidth;
}
let left = parseFloat(slider.style.left); // Moving the slider in px
let scrollPercent = (left * 100)/(scrollbar.offsetWidth - slider.offsetWidth); // Moving the slider in %
let index = ((container.scrollWidth - container.offsetWidth)*scrollPercent)/100; // Moving the container in px
container.style.transform = `translateX(-${index}px)`;
slider.style.left = `${newLeft}px`;
document.onselectstart = function() {
return false;
};
}
Тут много способов, к прримеру, определить, что index === последнему элементу и если они равны, то вызывать отпределенное событие.
Последний элемент можно просто вычислить, посчитав кол-во элементов.