我正在使用 JQuery UI 来实现可调整大小/可拖动的元素。现在我想为这些元素定义一个容器,限制在三个(!)边上调整大小/拖动。例如,看看这个JSFiddle 示例。您可以看到包含的元素只能在父区域内调整大小/拖动。
我想要实现的是元素可以超过底部阈值并移动到父元素的底部边框之外。尽管如此,调整大小/拖动仍应限制在顶部、右侧和左侧,如父级相应边界所规定的那样。
所以这个修改是我想出的:
// resizable/draggable option
resize/drag : function(event, ui) {
expandParent("#parentElement", "#dragElement");
}
function expandParent(parentName, childName) {
var dragEl = $(childName);
var dragElTop = parseInt(dragEl.css("top"), 10);
var dragElHeight = parseInt(dragEl.css("height"), 10);
var dragElBottom = dragElTop + dragElHeight;
var parentEl = $(parentName);
var parentElBottom = parseInt(parentEl.css("height"));
if(parentElBottom <= dragElBottom + 20) {
parentEl.css("height", "+=2");
}
}
如果您玩弄底部边框,您会注意到如果子级离父级的底部边框太近,父级的区域会扩大。不幸的是,这在 20 像素后停止。然后,您必须释放鼠标按钮并再次调整大小/拖动以进一步扩展该区域。你知道这是为什么吗?