拖动后如何使可拖动元素复制?

纳塔利娅·威特维卡(Natalia Witwicka)

我正在建立一个网站,人们可以在该网站上拖放形状来制作自己的作品。我想有4种形状可以拖动,但是形状会复制并保持不变,因此您可以随意使用它多次。

我知道HTML,CSS和一些JS,并且设法使形状可拖动(带有一些教程),但是我不知道如何使它们复制。任何建议将不胜感激!谢谢!

// Make the DIV element draggable:
dragElement(document.getElementById("mydiv"));

function dragElement(elmnt) {
  var pos1 = 0,
    pos2 = 0,
    pos3 = 0,
    pos4 = 0;
  if (document.getElementById(elmnt.id + "header")) {
    // if present, the header is where you move the DIV from:
    document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown;
  } else {
    // otherwise, move the DIV from anywhere inside the DIV:
    elmnt.onmousedown = dragMouseDown;
  }

  function dragMouseDown(e) {
    e = e || window.event;
    e.preventDefault();
    // get the mouse cursor position at startup:
    pos3 = e.clientX;
    pos4 = e.clientY;
    document.onmouseup = closeDragElement;
    // call a function whenever the cursor moves:
    document.onmousemove = elementDrag;
  }

  function elementDrag(e) {
    e = e || window.event;
    e.preventDefault();
    // calculate the new cursor position:
    pos1 = pos3 - e.clientX;
    pos2 = pos4 - e.clientY;
    pos3 = e.clientX;
    pos4 = e.clientY;
    // set the element's new position:
    elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
    elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
  }

  function closeDragElement() {
    // stop moving when mouse button is released:
    document.onmouseup = null;
    document.onmousemove = null;
  }
}
#mydiv {
  position: absolute;
  top: 100px;
  left: 100px;
  z-index: 9;
  background-color: #ffffffff;
  text-align: center;
  cursor: move;
  transform: translate(-50%, -50%) scale(0.5);
}
<div id="mydiv">
  <div id="mydivheader"><img src="m1.png"></div>
</div>
<script src="drag.js"></script>

特里摩斯

拖放拖动的div时,OP代码的这些修改将执行以下操作:

  1. 复制拖动的div,并将其添加到 <body>

  2. 将拖动的div返回到其起始位置

const mydiv = document.getElementById("mydiv");

// Make the DIV element draggable:
dragElement(mydiv);

function dragElement(elmnt) {
  var pos1 = 0,
    pos2 = 0,
    pos3 = 0,
    pos4 = 0;
  if (document.getElementById(elmnt.id + "header")) {
    // if present, the header is where you move the DIV from:
    document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown;
  } else {
    // otherwise, move the DIV from anywhere inside the DIV:
    elmnt.onmousedown = dragMouseDown;
  }

  function dragMouseDown(e) {
    e = e || window.event;
    e.preventDefault();
    // get the mouse cursor position at startup:
    pos3 = e.clientX;
    pos4 = e.clientY;
    document.onmouseup = closeDragElement;
    // call a function whenever the cursor moves:
    document.onmousemove = elementDrag;
  }

  function elementDrag(e) {
    e = e || window.event;
    e.preventDefault();
    // calculate the new cursor position:
    pos1 = pos3 - e.clientX;
    pos2 = pos4 - e.clientY;
    pos3 = e.clientX;
    pos4 = e.clientY;
    // set the element's new position:
    elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
    elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
  }

  function closeDragElement() {
    // stop moving when mouse button is released:
    document.onmouseup = null;
    document.onmousemove = null;
    
    // ****** start added code ******

    // create a clone of mydiv and append it to body
    const newDiv = mydiv.cloneNode(true);
    document.body.appendChild(newDiv);
    
    // move mydiv back to its starting position
    mydiv.style.top = null;
    mydiv.style.left = null;

    // ****** end added code ******
  }
}
#mydiv {
  position: absolute;
  top: 100px;
  left: 100px;
  z-index: 9;
  background-color: #ffffffff;
  text-align: center;
  cursor: move;
  transform: translate(-50%, -50%) scale(0.5);
}
<div id="mydiv">
  <div id="mydivheader"><img src="https://via.placeholder.com/80/"></div>
</div>
<script src="drag.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

拖动后如何使可拖动元素复制?

来自分类Dev

拖动后如何使可拖动元素复制?

来自分类Dev

拖动后如何使可拖动元素复制?

来自分类Dev

拖放所有可拖动元素后如何显示消息?

来自分类Dev

拖放后约束可拖动元素

来自分类Dev

如何使嵌套元素在可拖动容器中不可拖动?

来自分类Dev

jQueryUI Sortable 在重新初始化可拖动后复制元素

来自分类Dev

CSS [可拖动]元素

来自分类Dev

如何使用Jquery使将来的元素可拖动

来自分类Dev

如何获得可拖动元素掉落的值?

来自分类Dev

如何比较jQuery的可拖动元素?

来自分类Dev

如何修复“鼠标按住可拖动元素”

来自分类Dev

HighStocks可拖动元素干扰了栅格拖动

来自分类Dev

没有jquery ui的可拖动元素:如何停止拖动不可拖动和可输入类型的元素?

来自分类Dev

如何使纸张可拖动

来自分类Dev

删除最后一个可拖动元素后如何执行操作。

来自分类Dev

拖动jQuery后复制div

来自分类Dev

向d3拖动行为添加参数后,元素不再可拖动

来自分类Dev

如何使可动态添加的列表元素在jquery中可拖动?

来自分类Dev

可拖动元素内没有可拖动元素出错

来自分类Dev

如何拖动缩放的元素

来自分类Dev

设置可拖动元素的边界

来自分类Dev

纯JavaScript可拖动元素

来自分类Dev

获取可拖动元素的ID

来自分类Dev

在Canvas元素内可拖动

来自分类Dev

在toggleClass之后使元素可拖动

来自分类Dev

获取JQueryUI可拖动元素

来自分类Dev

限制可拖动元素JS

来自分类Dev

重置 jquery 可拖动元素