我有50个div,但在我的窗口中只显示25,我在这些div上拖放活动。所以如果我拖动我的第一个div 25th div,它应该自动滚动以显示剩余的div。如何在jquery中执行此操作?任何想法?如何使用jquery自动滚动窗口底部的页面时使用jquery
我使用Nestable不能拖动()
我有50个div,但在我的窗口中只显示25,我在这些div上拖放活动。所以如果我拖动我的第一个div 25th div,它应该自动滚动以显示剩余的div。如何在jquery中执行此操作?任何想法?如何使用jquery自动滚动窗口底部的页面时使用jquery
我使用Nestable不能拖动()
这将需要一些微调取决于你的具体用例,但它似乎工作得很好。
$('.dd').nestable({ /* config options */
});
$(window).mousemove(function (e) {
var x = $(window).innerHeight() - 50,
y = $(window).scrollTop() + 50;
if ($('.dd-dragel').offset().top > x) {
//Down
$('html, body').animate({
scrollTop: 300 // adjust number of px to scroll down
}, 600);
}
if ($('.dd-dragel').offset().top < y) {
//Up
$('html, body').animate({
scrollTop: 0
}, 600);
} else {
$('html, body').animate({
});
}
});
相关API文档:
如果你想知道窗口的底部,你可以检查
$(window).height()
和$(window).scrollTop()
;
我知道这是一个老话题,但由于此功能保持在待机状态,我只是提高apaul34208的代码,希望它有助于
$(window).mousemove(function (e) {
if ($('.dd-dragel') && $('.dd-dragel').length > 0 && !$('html, body').is(':animated')) {
var bottom = $(window).height() - 50,
top = 50;
if (e.clientY > bottom && ($(window).scrollTop() + $(window).height() < $(document).height() - 100)) {
$('html, body').animate({
scrollTop: $(window).scrollTop() + 300
}, 600);
}
else if (e.clientY < top && $(window).scrollTop() > 0) {
$('html, body').animate({
scrollTop: $(window).scrollTop() - 300
}, 600);
} else {
$('html, body').finish();
}
}
});
这修复了其他动画的取消,但仍然不是很好。过渡是非线性的,所以它假定你正在向下滚动区域移动鼠标,开始和停止。如果您在完成动画时没有移动鼠标,它将停止滚动,直到您移动一个像素为止,即使您已经在向下滚动区域暂停并开始将鼠标从其移开。 – 1j01
滚动事件可以手动为被触发这里解释: https://developer.mozilla.org/en-US/docs/Web/API/window.scroll 但是,因为你是专门使用jQuery的拖放我想拖动一个元素到浏览器窗口的底部触发滚动事件吗? – Ken
如何在元素拖动时知道何时到达窗口底部? – Achaius
我以为它自动做到了。 http://ktstowell.github.io/angular-file-utils/#/我在这里拖放。当我拖动左边的项目到窗口的底部时,浏览器会滚动到下面的内容。 – Ken