我会在可调整大小的div上指定不同的最大约束。例如,我希望在北向的最大大小调整为 20px,在南方向的最大调整大小为 200px。
我可以使用 maxHeight 轻松地只为一个方向执行此操作,并将手柄限制在一个方向上,但我无法同时管理这两个方向。
绝对不可能吗?
拜托,jQuery 和 jQuery UI 是不一样的。
jQuery UI 可调整大小的小部件为您提供了一组选项。正如您所注意到的,其中之一是maxHeight,但也有minHeight。当然还有宽度的等价物。
如果你有一个固定高度的项目(100px),你可以简单地使用这个代码来拥有20px的北和200px的南:
$("#resizable").resizable(
{
maxHeight: 300,
minHeight: 80
});
现在如果你不知道它的可变高度,你总是可以用jQuery找到它:
$("#resizable").resizable(
{
maxHeight: parseInt($("#resizable").height(),10)+200,
minHeight: parseInt($("#resizable").height(),10)-20
});
更好的是,如果您希望能够以 20px/200px 的步骤调整它的大小,您可以尝试使用 stop 事件:
$("#resizable").resizable(
{
maxHeight: parseInt($("#resizable").height(),10)+200,
minHeight: parseInt($("#resizable").height(),10)-20,
stop: function(event,ui)
{
$("#resizable").resizable("option","maxHeight",parseInt($("#resizable").height(),10)+200);
$("#resizable").resizable("option","minHeight",parseInt($("#resizable").height(),10)-20);
}
});
现在,如果您想使用两个不同的手柄增加其高度但有单独的限制,您可以使用手柄的类来强制另一个限制:
var originalHeight = parseInt($("#resizable").height(),10);
$("#resizable").resizable(
{
maxHeight: originalHeight+20,
minHeight: originalHeight, // decrease height impossible
start: function(event,ui)
{
if($(event.originalEvent.target).hasClass('ui-resizable-s'))
{
$("#resizable").resizable("option","maxHeight",originalHeight+200);
}
else
{
$("#resizable").resizable("option","maxHeight",originalHeight+20);
}
}
});
如果您不希望以后将元素的大小调整得更小,您还可以在 stop 事件中添加类似的东西:
,
stop: function()
{
$("#resizable").resizable("option","minHeight",parseInt($("#resizable").height(),10));
}