我在网页上的某些div上使用了HTML5属性draggable = "true"
。我想要它,这样当你将其中一个项目拖到页面底部时,它会向下滚动页面,当你将它拖到顶部时,它会向上滚动页面。
我最终会在侧边栏上制作一个播放列表,因为根据您在页面上的位置,它并不总是在视图中,所以在您拖动时页面需要滚动。
我的页面为here,您可以尝试拖动帖子的图片。在Chrome上,当我拖到底部时,它会自动向下滚动,但不会向上滚动。在Firefox上,它不会自动让我滚动任何方向。有什么帮助吗?
这是一个简单的jsfiddle来帮助您入门。在Chrome上,您应该可以向下拖动Google图标,让它向下滚动页面,但不会向上滚动。
答案 0 :(得分:20)
这是一个代码,可以在拖动某些内容时向上滚动或向下滚动页面。只需将拖动对象放在页面的顶部或底部即可。 :)
var stop = true;
$(".draggable").on("drag", function (e) {
stop = true;
if (e.originalEvent.clientY < 150) {
stop = false;
scroll(-1)
}
if (e.originalEvent.clientY > ($(window).height() - 150)) {
stop = false;
scroll(1)
}
});
$(".draggable").on("dragend", function (e) {
stop = true;
});
var scroll = function (step) {
var scrollY = $(window).scrollTop();
$(window).scrollTop(scrollY + step);
if (!stop) {
setTimeout(function () { scroll(step) }, 20);
}
}
答案 1 :(得分:0)
我制作了一个简单的JavaScript拖放类。它可以在拖动时自动向上或向下滚动页面。 见jsfiddle。也可在我的github页面上找到。 现在不建议高速拖动。我需要解决这个问题。
以下代码是图书馆的一部分。
var autoscroll = function (offset, poffset, parentNode) {
var xb = 0;
var yb = 0;
if (poffset.isBody == true) {
var scrollLeft = poffset.scrollLeft;
var scrollTop = poffset.scrollTop;
var scrollbarwidth = (document.documentElement.clientWidth - document.body.offsetWidth); //All
var scrollspeed = (offset.right + xb) - (poffset.right + scrollbarwidth);
if (scrollspeed > 0) {
this.scrollLeft(parentNode, scrollLeft + scrollspeed);
}
scrollspeed = offset.left - (xb);
if (scrollspeed < 0) {
this.scrollLeft(parentNode, scrollLeft + scrollspeed);
}
scrollspeed = (offset.bottom + yb) - (poffset.bottom);
if (scrollspeed > 0) {
this.scrollTop(parentNode, scrollTop + scrollspeed);
}
scrollspeed = offset.top - (yb);
if (scrollspeed < 0) {
this.scrollTop(parentNode, scrollTop + scrollspeed);
}
} else {
var scrollLeft = offset.scrollLeft;
var scrollTop = offset.scrollTop;
var scrollbarwidth = parentNode.offsetWidth - parentNode.clientWidth; //17
var scrollbarheight = parentNode.offsetHeight - parentNode.clientHeight; //17
var scrollspeed = (offset.right + xb) - (poffset.right - scrollbarwidth);
if (scrollspeed > 0) {
this.scrollLeft(parentNode, scrollLeft + scrollspeed);
}
scrollspeed = offset.left - (xb + poffset.left);
if (scrollspeed < 0) {
this.scrollLeft(parentNode, scrollLeft + scrollspeed);
}
scrollspeed = (offset.bottom + scrollbarheight + yb) - (poffset.bottom);
if (scrollspeed > 0) {
this.scrollTop(parentNode, scrollTop + scrollspeed);
}
scrollspeed = offset.top - (yb + poffset.top);
if (scrollspeed < 0) {
this.scrollTop(parentNode, scrollTop + scrollspeed);
}
}
};
答案 2 :(得分:-7)
如果你想使用可拖动的,你应该知道它现在是HTML 5的特性,它的jQuery,所以在这里查看http://jqueryui.com/draggable/ ..
像这样使用
$( "#draggable" ).draggable();