【问题标题】:Draggable element可拖动元素
【发布时间】:2019-09-24 06:16:32
【问题描述】:

我正在设置仪表板。我想创建一些圆形并允许用户在不同的单元格之间拖放它们(我在这里使用 div) 我可以从同一个文件夹中拖放图像,但无法在创建的带有文本的圆形上这样做

我曾尝试阅读 W3schools 教育材料 我认为代码错误源于要传输的数据集,但我不知道要更改什么

function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
.circle {
  height: 50px;
  width: 50px;
  background-color: #f05;
  border-radius: 50%;
  text-align: center;
  vertical-align: middle;
  color: #f0f;
}

#div1,
#div2 {
  float: left;
  width: 100px;
  height: 35px;
  margin: 1px;
  padding: 10px;
  border: 1px solid black;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"> </div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">
  <div class="circle" draggable="true" ondragstart="drag(event)" id="drag1">no.1</div>
</div>

我尝试创建两个 div 以允许在它们之间移动文本圆圈,但它没有任何结果。 请帮忙

【问题讨论】:

  • 运行您自己的代码。它似乎按照您的描述进行。这不是你需要的吗?请澄清。
  • 试过了!但我不能移动圆圈
  • 那可能是你的浏览器有问题。您必须使用支持此功能的浏览器。
  • 我正在使用 chrome Devtool

标签: javascript html css


【解决方案1】:

尝试使用display:flex;

function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
.circle {
  height: 50px;
  width: 50px;
  background-color: #f05;
  border-radius: 50%;
  text-align: center;
  vertical-align: middle;
  color: #f0f;
  margin:0 auto;
}

#div1,
#div2 {
  float: left;
  width: 100px;
  height: 35px;
  margin: 1px;
  padding: 10px;
  border: 1px solid black;
  display:flex;
  align-items:center;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"> </div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">
  <div class="circle" draggable="true" ondragstart="drag(event)" id="drag1">no.1</div>
</div>

【讨论】:

  • 哦!它工作得更好!我可以知道是否可以将元素从左到右对齐吗?
  • 只需添加 justify-content: flex-end;到父 div "#div1" 并删除 margin:0 auto;从类 .cricle 将圆圈向右对齐
  • 非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 2015-06-24
  • 2023-03-10
相关资源
最近更新 更多