Добро пожаловать в 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>
.Я решил использовать селектор класса, чтобы код был немного более переносимым.Таким образом, вы можете иметь много изображений, которые можно перетаскивать и изменять их размер.
Вы можете также рассмотреть возможность использования элемента <img>
внутри <div>
.в этом случае вы должны использовать 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>
Надеюсь, что поможет.