Я использую jquery для перемещения div, содержащего эскизы слева направо. Функции ниже работают, но они будут перемещать только 30 пикселей каждый раз, когда мышь перекатывается по стрелке. Есть ли способ передвижения сказать 30px в секунду все время мыши над стрелкой, а затем, как только мышь перемещается, анимация останавливается?
$(".left-arrow").mouseover(function(){
$("#slides").animate({
left: "-=30px",
}, 1000 );
});
$(".right-arrow").mouseover(function(){
$("#slides").animate({
left: "+=30px",
}, 1000 );
});
Основная логика заключается в использовании функции обратного вызова animate() для возобновления анимации по завершении:
$(".left-arrow").mouseover(function(){
playanim("+=30px");
}).mouseleave(function(){
stopanim();
});
$(".right-arrow").mouseover(function(){
playanim("-=30px");
}).mouseleave(function(){
stopanim();
});
function playanim(speed)
{
// launch the anim with the desired side
$("#slides").animate({
left: speed,
}, 1000,'linear',function(){playanim(speed);});
}
function stopanim()
{
// stop the animation and clear the animation queue
$("#slides").stop(true);
}
Он должен работать :)
Вот Jiddle, чтобы проверить: JsFiddle
РЕДАКТИРОВАТЬ: Чтобы добавить ограничение к скольжению, быстрый способ можно выполнить, проверив левую позицию слайда. Посмотрите на эту Jsfiddle для быстрого образца с ограничением min/max