javascript - HTML5拖放传输时调整div

标签 javascript jquery css html

我目前有一个将图像传输到三个 div 的拖放功能,我遇到的问题是 div 尺寸如何调整到插入到它的图像,所以所有图像只能放在一个盒子里..

还有可能只附加每个图像的 alt 以便每个人都适合吗?

<!DOCTYPE HTML>
<html>
<head>
<style>
div {
  width: 350px;
  height: 70px;
  padding: 10px;
  border: 1px solid #aaaaaa;
}
</style>
<script>
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));
}
</script>
</head>
<body>


<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="div3" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
  <img id="drag2" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
  <img id="drag3" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">


</body>
</html>

最佳答案

您可以在使用 javascript 删除图像后设置 div 尺寸,只需从 css 中删除填充,以便 div 适合图像,见下文

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

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

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  var img = document.getElementById(data);
  ev.target.appendChild(img);

  //set the div width & height aacording to the image width
  ev.target.style.width = parseInt(img.width) + 'px';
  ev.target.style.height = parseInt(img.height) + 'px';
}
div {
  border: 1px solid #aaaaaa;
  width: 350px;
  height: 70px;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br/>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br/>
<div id="div3" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<img id="drag1" src="https://images.unsplash.com/photo-1507146426996-ef05306b995a?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=336&q=69" draggable="true" ondragstart="drag(event)">
<img id="drag2" src="https://images.pexels.com/photos/33053/dog-young-dog-small-dog-maltese.jpg?auto=compress&cs=tinysrgb&dpr=2&w=336&h=69" draggable="true" ondragstart="drag(event)">
<img id="drag3" src="https://images.pexels.com/photos/257540/pexels-photo-257540.jpeg?auto=compress&cs=tinysrgb&h=69&w=336" draggable="true" ondragstart="drag(event)">

关于javascript - HTML5拖放传输时调整div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54563347/

相关文章:

javascript - 正则表达式 - 用换行符替换第三个点和空格

html - 调整大小后菜单移动

html - 在未嵌套的行之间 Bootstrap 移动元素

jquery - CSS位置问题

javascript - 为什么我总是得到 'false' 值?

javascript - 仅对所有 iPhone 和 IPADS 进行样式设置的 CSS 样式

javascript - 用户界面 - 内联帮助覆盖

javascript - 由于 margin-left 导致的 jQuery 意外标记

javascript - 调整窗口大小时如何流动图像?

jquery - jQuery cycle() 幻灯片的间歇性定位问题