Прокрутка jQuery с использованием перетаскиваемого div

#jquery #jquery-plugins

#jquery #jquery-плагины

Вопрос:

Я создаю плагин jQuery, который создает прокручиваемый div. Вы можете прокручивать вверх и вниз, используя div с правой стороны. Проблема в том, что мой перетаскиваемый div, кажется, довольно дрожащий при его перемещении.

Полный пример того, что я пытаюсь, находится здесь: http://jsfiddle.net/j8Hqq/1 /

Я думаю, что оскорбительный код будет здесь:

 .mousemove(function(e) {
    if(being_dragged) {
        scroller_y = e.pageY - $(this).offset().top;

        if(scroller_y < 0)
            scroller_y = 0;
        else if(scroller_y > $this.height() - $(this).height())
            scroller_y = $this.height() - $(this).height();
    }

    $(this).css({
        top: scroller_y
    });

    $('#custom-scroll-children').scrollTop(scroller_y);
});
  

Я думал о внедрении в него jQuery-ui.draggable, но не хотел, чтобы к плагину была прикреплена большая библиотека.

Спасибо,

Комментарии:

1.вы пробовали JScrollPane? jscrollpane.kelvinluck.com jscrollpane.kelvinluck.com/basic.html

Ответ №1:

$(this).offset().top; в mousemove получает сильно отличающиеся значения, вот почему она такая же прерывистая, как и есть. Я получил более плавные результаты, поместив topOffset = $(this).offset().top; в функцию mousedown, а затем используя scroller_y = e.pageY - topOffset; в mousemove.

Тем не менее, все еще есть проблемы (прокрутка останавливается, когда мышь покидает область прокрутки, быстрые движения мыши останавливают прокрутку).

Вы смотрели на http://jscrollpane.kelvinluck.com / ? Это плагин jQuery, который в значительной степени выполняет то, чего вы пытаетесь достичь здесь.

Комментарии:

1. Спасибо за вашу помощь, я смог сделать это более плавным, сделав это. Я продолжу делать то, что делаю, но спасибо, что указали на JScrollPane (и @Andy), я знаю, что мне есть на что опереться в случае неудачи!

Ответ №2:

.функция css заставляет перетаскиваемый div дрожать, вы можете попробовать функцию «анимировать».