javascript - 如何通过拖动而不是使用滚动条来滚动 div

标签 javascript scroll draggable

我正在从事一个使用触摸屏界面的项目。我在一个较小的 div 中有一个 div,所以较小的 div 有滚动条来访问第一个 div 的其余部分。这是它的基本代码。

.div1{
      height: 100px;
      width: 100px;
}
.div2{
      height: 50px;
      width: 50px;
}

html 是:

<div id = "div2" class="div2">
 <div id="div1" class="div1"></div>
</div>

使用 javascript,我希望能够通过按下(因为它是触摸屏)屏幕上未被占用的部分并沿着 div 拖动来滚动浏览 div2。基本上,当您单击并拖动它时,滚动功能的行为方式与谷歌地图的行为方式相同。有人可以帮我吗?提前致谢!

注意事项

在鼠标 Action 方面,按下相当于点击这里,只是说清楚。我也只在 Firefox 中工作,所以跨浏览器兼容性不是问题。

最佳答案

这行得通......在你引用 FireFox 之前,我已经开始为移动 safari 制作它......所以它可能有一点额外......

var _startX = 0;
var _startY = 0;
var _offsetX = 0;			
var _offsetY = 0;
var _dragElement;
document.onmousedown = OnMouseDown;
document.onmouseup = OnMouseUp;

function OnMouseDown(event){
  document.onmousemove = OnMouseMove;
    _startX = event.clientX;
  _startY = event.clientY;
  _offsetX = document.getElementById('div1').offsetLeft;
  _offsetY = document.getElementById('div1').offsetTop;
  _dragElement = document.getElementById('div1');

}

function OnMouseMove(event){
    _dragElement.style.left = (_offsetX + event.clientX - _startX) + 'px';
  _dragElement.style.top = (_offsetY + event.clientY - _startY) + 'px';
}

function OnMouseUp(event){
  document.onmousemove = null;
  _dragElement=null;
}
.div1{position:absolute; height:500px; width: 500px; z-index:1; background-color:red;}
.div2{position:absolute; top:100px; left:100px; height:100px; width:100px; z-index:2; overflow:hidden; display:block;}
<div class="div2" id="div2">
  <div class="div1" id="div1">
  </div>
</div>

关于javascript - 如何通过拖动而不是使用滚动条来滚动 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6914360/

相关文章:

javascript - 查找所有元素,如果没有该类,则使用 jQuery 添加其他类

javascript - HTML输入按钮改变内容

jquery - 禁用水平拖动滚动

reactjs - 更改 Material UI 选项卡组件上的滚动按钮图标

javascript - 在谷歌地图 v3 中绘制可拖动形状

javascript - 每次我移动它时,可拖动都会成倍增加

ios - UIView 转换后拖动行为错误

javascript - 使用 queryselectorall、jquery、getelementsbyid、getelementsbyclassname 从 dom 中删除元素

javascript - PhantomJS 从 "json+ld"以外的 html 快照中删除脚本标签

css - 为什么我的 CSS3 渐变会滚动,如何防止它滚动?