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

Posted

技术标签:

【中文标题】我正在尝试使图像可拖动,但是每当我调整高度和宽度时,它就会停止工作【英文标题】:I'm trying to make an image draggable but whenever I resize the height and width it stops working 【发布时间】:2019-04-17 18:26:50 【问题描述】:

所以我正在尝试为我的课堂项目制作一本相册。我希望照片能够在网页上拖动和移动。我能够使我的一张图像可拖动,但是图像太大了,所以我在 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>

【问题讨论】:

【参考方案1】:

您在选择器中忘记了#,并且错过了一些&lt;/div&gt; 标签:

<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>

这应该可以解决问题。

【讨论】:

【参考方案2】:

欢迎来到 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>

如果您不喜欢额外的句柄,则不必使用它们。在此示例中,您仅拖动一个 &lt;div&gt; 元素并调整其大小。我选择使用类选择器,以便代码更便携。因此,您可以拥有许多可以拖动和调整大小的图像。

您也可以考虑不在&lt;div&gt; 中使用&lt;img&gt; 元素。在这种情况下,您将使用 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>

希望对您有所帮助。

【讨论】:

以上是关于我正在尝试使图像可拖动,但是每当我调整高度和宽度时,它就会停止工作的主要内容,如果未能解决你的问题,请参考以下文章

jQuery图像调整大小 - 宽度不适合

如何在浏览器宽度调整大小但保持相同高度时自动调整图像大小?

如何在android中动态地使形状可拖动和调整大小

使图像在 div 内可拖动和调整大小

下载图像时 UITableViewCell 高度调整大小

jQuery UI resizable 在调整宽度时改变高度