1つの選択肢は、あなた自身の封じ込めを処理することです。これを行うための1つの方法があります。
私は回転した要素の高さと幅を取得するためにgetBoundingClientRectを使用しています。これらの値を使って、ドラッグされた要素が親コンテナとの関係でどこにあるのかを知ることができます。
var boundingContainer, boundingDraggable, prevLeft, prevTop;
$(".draggable").draggable({
classes: {
"ui-draggable-dragging": "highlight-draggable"
},
start: function(event, ui) {
boundingDraggable = ui.helper[0].getBoundingClientRect();
boundingContainer = ui.helper.closest('#draggableContainer')[0].getBoundingClientRect();
},
drag: function(event, ui) {
if(ui.offset.left <= boundingContainer.left){
if(ui.position.left < prevLeft){
ui.position.left = prevLeft;
}
}
if(ui.offset.top <= boundingContainer.top){
if(ui.position.top < prevTop){
ui.position.top = prevTop;
}
}
if(ui.offset.left+boundingDraggable.width >= boundingContainer.right){
if(ui.position.left > prevLeft){
ui.position.left = prevLeft;
}
}
if(ui.offset.top+boundingDraggable.height >= boundingContainer.bottom){
if(ui.position.top > prevTop){
ui.position.top = prevTop;
}
}
prevLeft = ui.position.left;
prevTop = ui.position.top;
}
});
Fiddle
私はあなたがdiv要素で変換要素をラップする必要があると思います。そのdivをdraggableにし、ハンドルを変換された要素に設定します。こちらをご覧ください:http://jsfiddle.net/Twisty/fup2ga8p/元のボックスは、それが境界点であるためにブラウザが使用しているものです。 – Twisty
作品を動作させるために、あなたのフィドルを 'pixelsToPercentages'関数で更新してください。 –
@DmytroGrynetsフィディドを更新しました:) –