У меня проблема с позиционированием с использованием перетаскиваемого интерфейса jQuery (jQuery UI v1.10.3, jQuery v1.10.2).
Я хочу перетащить элемент в буксируемый , и тогда буксируемый станет его родителем, и положение будет таким же, как у мыши позиция. Это работает. Проблема в обратном случае. Там я хочу, чтобы перетаскиваемый стал дочерним для "box_drop", а позиция должна быть такой же, как и позиция мыши в в обоих измерениях . (На стороне я делаю некоторые изменения размера, но с этим нет проблем). Настоящая проблема заключается в том, что я не могу манипулировать позиционированием перетаскиваемого объекта, если запускаю событие out. Draggable просто прыгает в верхнем правом углу, а также игнорирует сдерживание. Это можно увидеть в этом jsfiddle: https://jsfiddle.net/7ev3nkq1/10/
Основной код указан ниже.
HTML:
<div id="experimentalbox">
<div id="box_drop">
<div class="droppable"></div>
</div>
<div id="box">
<span class="draggable"></span>
</div>
</div>
CSS
#experimentalbox{
position: relative;
}
#box_drop{
width: 100%;
height: 61.5%;
position: absolute;
top: 0%;
display: inline-block;
}
.droppable{
width: 35%;
height: 25%;
position: absolute;
bottom: 17.5%;
left: 30%;
}
#box{
width: 100%;
height: 23%;
position: absolute;
bottom: 15.4%;
display: inline-block;
}
.draggable{
width: 10%;
height: 40%;
top: auto;
display: inline-block;
}
JS:
$(".draggable").draggable({
containment: "#experimentalbox",
});
$(".droppable").droppable({
drop: function(event, ui){
ui.draggable.css({
"width": parseFloat($("#box").outerWidth() / $(this).outerWidth()) * 10 + "%",
"height": parseFloat($("#box").outerHeight() / $(this).outerHeight()) * 40 + "%",
});
ui.draggable.detach().appendTo(this);
ui.draggable.css("left", event.pageX - ui.draggable.parent().offset().left - ui.draggable.width()/2);
var top_draggable_mitte = $(this).offset().top + $(this).outerHeight() - ui.draggable.outerHeight();
ui.draggable.offset({top: top_draggable_mitte});
},
out: function(event, ui){
ui.draggable.detach().appendTo($("#box_drop"));
ui.draggable.css({
"width": parseFloat($("#box").outerWidth() / ui.draggable.parent().outerWidth()) * 10 + "%",
"height": parseFloat($("#box").outerHeight() / ui.draggable.parent().outerHeight()) * 40 + "%",
});
ui.draggable.css({"left": "100%"});
},
});
Я с нетерпением жду ваших ответов!
Заранее спасибо!
С наилучшими пожеланиями Eri c