首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Interactjs如何更改启动位置拖动项

Interactjs如何更改启动位置拖动项
EN

Stack Overflow用户
提问于 2022-03-21 10:25:19
回答 1查看 214关注 0票数 2

我的拖放项目最初出现在左上角。我想给100像素的空间,从顶部和左边的开放。但我必须使用interactjs自己的代码,而不是css。因为如果我用css做这件事,滚动设置就坏了

代码语言:javascript
运行
复制
interact('.dragitem')
    .draggable({
        inertia: true,
        modifiers: [
        interact.modifiers.restrictRect({
            restriction: 'parent',
            endOnly: true
        })
        ],
        autoScroll: true,
        listeners: {
            move: dragMoveListener
        }
        
    })
    function dragMoveListener (event) {
    var target = event.target
    var x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx
    var y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy
    target.style.transform = 'translate(' + x + 'px, ' + y + 'px)';
    target.setAttribute('data-x', x)
    target.setAttribute('data-y', y)
    }
    window.dragMoveListener = dragMoveListener
代码语言:javascript
运行
复制
.drag-container {
  width:1000px;
  height:1000px;
  background:red;
}
.dragitem {
width:100px;
height:100px;
background:blue;
}
代码语言:javascript
运行
复制
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<div class="drag-container">
  <div class="dragitem">drag me</div>
</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 09:32:38

您必须在HTML中直接编辑样式、数据-x和数据-y的起始位置。

代码语言:javascript
运行
复制
<div class="dragitem" style="transform: translate(100px, 100px);" data-x="100" data-y="100">drag me</div>

代码语言:javascript
运行
复制
interact('.dragitem')
    .draggable({
        inertia: true,
        modifiers: [
        interact.modifiers.restrictRect({
            restriction: 'parent',
            endOnly: true
        })
        ],
        autoScroll: true,
        listeners: {
            move: dragMoveListener
        }
    })
    function dragMoveListener (event) {
      var target = event.target

      var x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx
      var y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy
      target.style.transform = 'translate(' + x + 'px, ' + y + 'px)';
      target.setAttribute('data-x', x)
      target.setAttribute('data-y', y)
    }
    window.dragMoveListener = dragMoveListener
代码语言:javascript
运行
复制
.drag-container {
  width:1000px;
  height:1000px;
  background:red;
}
.dragitem {
  width:100px;
  height:100px;
  background:blue;
}
代码语言:javascript
运行
复制
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<div class="drag-container">
  <div class="dragitem" style="transform: translate(100px, 100px);" data-x="100" data-y="100">drag me</div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71556034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档