javascript - 通过抓取其背景来拖动 div 内容

标签 javascript jquery html css jquery-ui

当内容超出 div 时,我们使用滚动条来查看它。如何通过捕获并拖动其背景来滚动 div 内容?我搜索了解决方案,但没有找到我需要的。这是我的 fiddle :

https://jsfiddle.net/vaxobasilidze/xhn49e1j/

将任何 item 拖到右侧的 div 并将其移出容器的右侧或底部。滚动条似乎可以帮助您滚动。这是我想要实现的示例。查看链接上的第一个图表并拖动它:

https://jsplumbtoolkit.com/

关于如何执行此操作的任何提示?

最佳答案

您应该只需要检测鼠标何时按下,然后当鼠标移动时您可以存储先前的鼠标坐标并引用当前坐标。最后,您可以根据自上次 mousemove 调用以来的拖动差异,将有问题的 div 滚动一定量。

var mouseDown = false;
var prevCoords = { x: 0, y: 0 };

$("#mainDiv").mousedown(function() {
  mouseDown = true;
}).mousemove(function(e) {
  var currentScrollX = $('#mainDiv').scrollLeft();
  var currentScrollY = $('#mainDiv').scrollTop();
  if(mouseDown) { 
    $('#mainDiv').scrollLeft(currentScrollX + prevCoords.x - (e.clientX + currentScrollX))
    $('#mainDiv').scrollTop(currentScrollY + prevCoords.y - e.clientY)
  };
  prevCoords.x = e.clientX + currentScrollX;
  prevCoords.y = e.clientY;
}).mouseup(function() {
  mouseDown = false;
});

https://jsfiddle.net/6rx30muh/

编辑:修复了拖动时表格摆动的错误:

            var mouseDown = false;
            var prevCoords = { x: 0, y: 0 };

            $("#mainDiv").mousedown(function() {
                mouseDown = true;
            }).mousemove(function(e) {
                var currentScrollX = $('#mainDiv').scrollLeft();
                var currentScrollY = $('#mainDiv').scrollTop();
                if(mouseDown) { 
                    $('#mainDiv').scrollLeft(currentScrollX + prevCoords.x - e.clientX)
                    $('#mainDiv').scrollTop(currentScrollY + prevCoords.y - e.clientY)
                };
                prevCoords.x = e.clientX;
                prevCoords.y = e.clientY;
            }).mouseup(function() {
                mouseDown = false;
            });

关于javascript - 通过抓取其背景来拖动 div 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47648833/

相关文章:

html - H2 和段落,内联?

javascript - Angular 2 : String interpolation with function call

javascript - 替换字符串索引处的字符

javascript - 如何检查用户输入是否为整数

javascript - 单击按钮时旋转 CSS 卡

javascript - 在 jQuery 中追加

javascript - 使用两个选择控件编辑表单,以便在首次启动时进行过滤

javascript - 如何在网站上集成 Skype 聊天

javascript - 如何从字符串中删除所有 html 标签

javascript - 如何确定元素是 javascript/jquery 中父元素的最后一个还是第一个子元素?