是否有一种简单的方法可以处理由div上的左侧或右侧单击和拖动组成的移动事件,以便执行经典滑块。
这个想法是做类似于滚动iphone应用程序的东西,但是点击鼠标左键。
答案 0 :(得分:11)
你的意思是这样的?
var x,y,top,left,down;
$("#stuff").mousedown(function(e){
e.preventDefault();
down = true;
x = e.pageX;
y = e.pageY;
top = $(this).scrollTop();
left = $(this).scrollLeft();
});
$("body").mousemove(function(e){
if(down){
var newX = e.pageX;
var newY = e.pageY;
$("#stuff").scrollTop(top - newY + y);
$("#stuff").scrollLeft(left - newX + x);
}
});
$("body").mouseup(function(e){down = false;});
在区域内单击并拖动以在div中移动。这很快又很脏,但如果这就是你的意思,那就是一个很好的起点。除非某个地方有现有的插件。
答案 1 :(得分:0)
嗨,朋友检查一下我认为这会解决您的问题http://www.axure.com/forum/support-axure-com-collection/4418-answered-how-make-scrolling-page-scrollable-content-scroll-dynamic-panel-dragging-scrollbars-vertical-horizontal-drag-ondrag.html,这也是http://mootools.net/demos/?demo=Drag.Scroll我认为这会对您有所帮助http://dragon.deparadox.com/
答案 2 :(得分:0)
ES6版本/ https://stackoverflow.com/a/5839943/145122的Vanilla JS
let el = document.querySelector("#yourhtmlelement");
let x = 0, y = 0, top = 0, left = 0;
let draggingFunction = (e) => {
document.addEventListener('mouseup', () => {
document.removeEventListener("mousemove", draggingFunction);
});
el.scrollLeft = left - e.pageX + x;
el.scrollTop = top - e.pageY + y;
};
el.addEventListener('mousedown', (e) => {
e.preventDefault();
y = e.pageY;
x = e.pageX;
top = el.scrollTop;
left = el.scrollLeft;
document.addEventListener('mousemove', draggingFunction);
});