一種選擇是自己處理遏制措施。這是一種可能的方式來做到這一點。
我正在使用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可拖動,並將句柄設置爲已轉換的元素。看到這裏:http://jsfiddle.net/Twisty/fup2ga8p/你可以看到原來的盒子仍然是瀏覽器使用它的邊界點。 – Twisty
請使用'pixelsToPercentages'功能更新您的小提琴,以使其發揮作用 –
@DmytroGrynets更新了小提琴:) –