我正在尝试使图像可拖动,但每当我调整高度和宽度时它就会停止工作

I'm trying to make an image draggable but whenever I resize the height and width it stops working

所以我正在尝试为我的 class 项目制作一本相册。我希望照片能够在网页上拖动和移动。我能够使我的其中一张图片可拖动,但是图片太大了,所以我在 css 中调整了它的大小。

但是,每当我调整它的大小时,可拖动功能就会停止工作。所以我不确定我做错了什么。

<body>
<div id="draggable" class="ui-widget-content">
<div id="resizeableDiv" class="ui-widget-content">

<div id="img1">
<img src="imgs/alexa.jpg">
</div>
</body>

<script>
$(function() {
$("resizableDiv").resizable();
});

$( function() {
$( "#draggable" ).draggable();
} );
</script>

您在选择器中忘记了 #,并且遗漏了一些 </div> 标签:

<body>
<div id="draggable" class="ui-widget-content"></div>
<div id="resizeableDiv" class="ui-widget-content"></div>

<div id="img1">
<img src="imgs/alexa.jpg">
</div>
</body>

<script>
  $(function () {
      $("#resizableDiv").resizable();
  });

  $(function () {
      $("#draggable").draggable();
  });
</script>

这应该可以解决问题。

欢迎来到 Stack Overflow。

我认为你让它变得比需要的更复杂。我会建议以下示例:

$(function() {
  $(".resize").resizable({
    handles: "ne, nw, se, sw",
    aspectRatio: true
  });
  $(".ui-resizable-handle-se").removeClass("ui-icon ui-icon-gripsmall-diagonal-se");
  $(".drag").draggable();
});
.resize img {
  width: 100%;
  height: 100%;
}

.ui-resizable-handle {
  width: 8px;
  height: 8px;
  background: #fff;
  border: 1px solid #000;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="div-1" class="drag resize edit-image ui-widget-content">
  <img src="//i.imgur.com/KcxrVPk.jpg">
</div>

如果您不喜欢额外的手柄,则不必使用它们。在此示例中,您仅拖动和调整一个 <div> 元素。我选择使用 class 选择器,这样代码更便于移植。所以你可以有很多可以拖动和调整大小的图像。

您也可以考虑不在 <div> 中使用 <img> 元素。在这种情况下,您将使用 CSS 将 background-image 属性 设置为相关图像图像。像这样:

$(function() {
  $(".edit-image").each(function(ind, el) {
    var imgSrc = $(el).data("src");
    var img = $("<img>", {
      src: imgSrc,
      style: "display: none;"
    }).appendTo("body");
    $(el).css({
      "background-image": "url('" + imgSrc + "')",
      width: img.width(),
      height: img.height()
    });
    img.remove();
  });

  $(".resize").resizable({
    handles: "ne, nw, se, sw",
    aspectRatio: true,
    resize: function(e, ui) {
      var w = ui.size.width,
        h = ui.size.height;
      $(this).css("background-size", w + "px " + h + "px");
    }
  });

  $(".drag").draggable();
});
.resize img {
  width: 100%;
  height: 100%;
}

.edit-image {
  background-repeat: no-repeat;
}

.ui-resizable-handle {
  width: 8px;
  height: 8px;
  background: #fff;
  border: 1px solid #000;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="div-1" class="drag resize edit-image ui-widget-content" data-src="//i.imgur.com/KcxrVPk.jpg">
</div>

希望对您有所帮助。