/** * JQuery插件,在特定的DOM元素(出现滚动条)上滑动(鼠标左键按下,移动)时,DOM里的内容跟随鼠标移动 * DOM 元素上加上: unselectable="on" onselectstart="return false;" style="-moz-user-select:none;" * 防止拖动鼠标时,选择元素中的文字 * Created by 广平 on 2017/5/19. */ ; (function($, window, document, undefined) { $.fn.movescroll = function(options) { var _defaults = { // 在哪个方向跟随移动 axis : "Y", // 跟随的速度,大于1将超过鼠标移动的速度 speed : 1 }; var settings = $.extend({}, _defaults, options); var $elemets = this; return $elemets.each(function() { var isDrag = false; var onMove = false; var mouseStartX = 0, mouseStartY = 0; var scrollStartLeft = 0, scrollStartTop = 0; var $scroller = $(this); $scroller.on("mousedown", function(e) { isDrag = true; mouseStartX = parseInt(e.pageX); mouseStartY = parseInt(e.pageY); scrollStartLeft = parseInt($(this).scrollLeft()); scrollStartTop = parseInt($(this).scrollTop()); }); $(window).on("mouseup", function(e) { isDrag = false; isScroll = false; onMove = false; }); $scroller.on("scroll", function(e) { if(!onMove) { scrollStartLeft = parseInt($(this).scrollLeft()); scrollStartTop = parseInt($(this).scrollTop()); isDrag = false; } onMove = false; }); $scroller.on("mousemove", function(e) { onMove = true; if (isDrag) { var moveX = parseInt(e.pageX) - mouseStartX; var moveY = parseInt(e.pageY) - mouseStartY; if(settings.axis == 'X') { $(this).scrollLeft(-moveX * settings.speed + scrollStartLeft); } else if (settings.axis == 'Y') { $(this).scrollTop(-moveY * settings.speed + scrollStartTop); } } }); }); }; }(jQuery, window, document));