Вот базовая функция скольжения элемента. Вы можете поиграть со значениями steps
и timer
, чтобы получить правильную скорость и плавность анимации.
function slideTo(el, left) {
var steps = 25;
var timer = 25;
var elLeft = parseInt(el.style.left) || 0;
var diff = left - elLeft;
var stepSize = diff / steps;
console.log(stepSize, ", ", steps);
function step() {
elLeft += stepSize;
el.style.left = elLeft + "px";
if (--steps) {
setTimeout(step, timer);
}
}
step();
}
Так что вы можете пойти:
slideTo(containingUL, -slideNumber * slideWidth);
Редактировать: Забыли ссылку на JSFiddle
Редактировать: Чтобы сдвинуть влево, укажите значение left
меньше текущего style.left
. Для скольжения вправо укажите значение, превышающее текущее значение style.left
. Для вас это не должно иметь большого значения. Вы должны иметь возможность подключить его к существующему коду. Я предполагаю, что ваш текущий код увеличивается или уменьшается slideNumber
, а затем устанавливает style.left
в соответствии с slideNumber. Примерно так должно работать:
if (nextButtonClicked) slideNumber++;
else slideNumber--;
slideTo(containingUL, -slideNumber * slideWidth);
Я обновил JSFiddle рабочим примером скользящей «галереи», включая кнопки prev и next. http://jsfiddle.net/gilly3/EuzAK/2/